1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Oscar

Beiträge von Oscar

  • Obscufator

    • Oscar
    • 19. April 2010 um 08:37

    Ich muss SEuBo zustimmen. Eine absolute Sicherheit gibt es nicht und die wird man mit AutoIt auch nicht erreichen können.
    Man kann es den Skript-Kiddies nur schwerer machen (obfuscaten).

    Dafür habe ich meinen Random-Obfuscator mal noch etwas erweitert (jetzt auch mit Random-Funktionsnamen):

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $sTitle = 'Random-Obfuscator v2.0'
    Global $sObfuscator = StringRegExpReplace(@AutoItExe, '(.+\\).+', '$1') & 'SciTE\Obfuscator\Obfuscator.exe' ; Pfad zum Original-Obfuscator
    Global $hGui = GUICreate($sTitle & ' (C) by Oscar (http://www.autoit.de)', 640, 240)
    GUISetBKColor(0xAAAAAA)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateGroup('Source', 10, 10, 300, 110)
    GUICtrlSetFont(-1, 14, 400, 0, 'Arial')
    GUICtrlCreateLabel('Filename:', 20, 50, 70, 25)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    $hSourceFilename = GUICtrlCreateLabel('', 90, 50, 200, 25)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    GUICtrlCreateLabel('Lines:', 20, 70, 70, 25)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    $hSourceLines = GUICtrlCreateLabel('0', 90, 70, 200, 25)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    GUICtrlCreateLabel('Filesize:', 20, 90, 70, 25)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    $hSourceFilesize = GUICtrlCreateLabel('0 Bytes', 90, 90, 200, 25)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    GUICtrlCreateGroup('', -99, -99, 1, 1)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateGroup('Destination', 330, 10, 300, 110)
    GUICtrlSetFont(-1, 14, 400, 0, 'Arial')
    GUICtrlCreateLabel('Filename:', 340, 50, 70, 25)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    $hDestFilename = GUICtrlCreateLabel('', 410, 50, 200, 25)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    GUICtrlCreateLabel('Lines:', 340, 70, 70, 25)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    $hDestLines = GUICtrlCreateLabel('0', 410, 70, 200, 25)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    GUICtrlCreateLabel('Filesize:', 340, 90, 70, 25)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    $hDestFilesize = GUICtrlCreateLabel('0 Bytes', 410, 90, 200, 25)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    GUICtrlCreateGroup('', -99, -99, 1, 1)

    [/autoit] [autoit][/autoit] [autoit]

    $hProgressPercent = GUICtrlCreateLabel('0%', 295, 130, 60, 18, $SS_CENTER)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    $hProgress = GUICtrlCreateProgress(10, 150, 620, 16)

    [/autoit] [autoit][/autoit] [autoit]

    $hStatusLine = GUICtrlCreateLabel(' Select Script . . .', -2, 222, 644, 18, $SS_SUNKEN)
    GUICtrlSetBKColor(-1, 0xdddddd)
    GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    $sScriptSource = FileOpenDialog('Select Script', @ScriptDir, 'AutoIt-Script (*.au3)', 3, '', $hGui)
    If @error Then _End()
    GUICtrlSetData($hSourceFilename, StringRegExpReplace($sScriptSource, '.+\\(.+)', '$1'))
    $sSource = FileRead($sScriptSource)
    GUICtrlSetData($hSourceFilesize, _StringAddThousandsSep(FileGetSize($sScriptSource), '.', ',') & ' Bytes')
    StringReplace($sSource, @CR, '')
    GUICtrlSetData($hSourceLines, @extended)

    [/autoit] [autoit][/autoit] [autoit]

    $sSource = StringReplace($sSource, '#AutoIt3Wrapper_Run_Obfuscator', '; #AutoIt3Wrapper_Run_Obfuscator')
    $sSource = StringReplace($sSource, '#Obfuscator_Parameters', '; #Obfuscator_Parameters')
    $sSource = StringRegExpReplace($sSource, '((\x22|\x27).*(\x22|\x27))|(;\V*)|(?s)((#cs|#comments-start).+?(#ce|#comments-end)\V*)', '$1')
    $sSource = StringRegExpReplace($sSource, '(\r\n)\s+', '$1')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($hStatusLine, ' Create Dictionaries . . .')
    $oDictVars = ObjCreate('Scripting.Dictionary') ; Variablen-Ersetz-Wörterbuch anlegen
    If Not IsObj($oDictVars) Then _End('Cannot create 1st Scripting.Dictionary!')
    $oDictVars.CompareMode = 1 ; Textmode (Case-insensitive) einschalten

    [/autoit] [autoit][/autoit] [autoit]

    $oDictFuncs = ObjCreate('Scripting.Dictionary') ; Funktionen-Ersetz-Wörterbuch anlegen
    If Not IsObj($oDictFuncs) Then _End('Cannot create 2nd Scripting.Dictionary!')
    $oDictFuncs.CompareMode = 1 ; Textmode (Case-insensitive) einschalten

    [/autoit] [autoit][/autoit] [autoit]

    $oDictHelpV = ObjCreate('Scripting.Dictionary') ; Hilfs-Wörterbuch für Zufallsvariablen anlegen
    If Not IsObj($oDictHelpV) Then _End('Cannot create 3rd Scripting.Dictionary!')
    $oDictHelpV.CompareMode = 1 ; Textmode (Case-insensitive) einschalten

    [/autoit] [autoit][/autoit] [autoit]

    $oDictHelpF = ObjCreate('Scripting.Dictionary') ; Hilfs-Wörterbuch für Zufallsfunktionen anlegen
    If Not IsObj($oDictHelpF) Then _End('Cannot create 4th Scripting.Dictionary!')
    $oDictHelpF.CompareMode = 1 ; Textmode (Case-insensitive) einschalten

    [/autoit] [autoit][/autoit] [autoit]

    _Exception($sSource) ; Ausnahmen ins Wörterbuch eintragen

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($hStatusLine, ' Obfuscate Variables . . .')
    $sTmp = StringRegExpReplace($sSource, '(?:\x22|\x27)(.+?)(?:\x22|\x27)', '')
    $aVars = StringRegExp($sTmp, '(?i)\$\w+', 3)
    If IsArray($aVars) Then
    $aVars = _ArrayUnique($aVars)
    _ArraySort($aVars, 1)
    For $i = 1 To $aVars[0]
    If Not $oDictVars.Exists($aVars[$i]) Then $oDictVars.Add($aVars[$i], _RandomVar())
    $sSource = StringReplace($sSource, $aVars[$i], $oDictVars.Item($aVars[$i]))
    $iPercent = Int(50 / $aVars[0] * $i)
    GUICtrlSetData($hProgress, $iPercent)
    GUICtrlSetData($hProgressPercent, $iPercent & '%')
    Next
    EndIf
    GUICtrlSetData($hStatusLine, ' Obfuscate Funktions . . .')
    $aFuncs = StringRegExp($sTmp, '(?i)Func (\w+)', 3)
    If IsArray($aFuncs) Then
    $aFuncs = _ArrayUnique($aFuncs)
    _ArraySort($aFuncs, 1)
    For $i = 1 To $aFuncs[0]
    If Not $oDictFuncs.Exists($aFuncs[$i]) Then $oDictFuncs.Add($aFuncs[$i], _RandomFunc())
    $sSource = StringReplace($sSource, $aFuncs[$i], $oDictFuncs.Item($aFuncs[$i]))
    $iPercent = Int(50 / $aFuncs[0] * $i) + 50
    GUICtrlSetData($hProgress, $iPercent)
    GUICtrlSetData($hProgressPercent, $iPercent & '%')
    Next
    EndIf
    GUICtrlSetData($hProgress, 100)
    GUICtrlSetData($hProgressPercent, '100%')

    [/autoit] [autoit][/autoit] [autoit]

    StringReplace($sSource, @CR, '')
    GUICtrlSetData($hDestLines, @extended)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($hStatusLine, ' Save random obfuscated Script . . .')
    $sDestFile = StringRegExpReplace($sScriptSource, '(.+)(\..+)', '$1_rnd$2')
    GUICtrlSetData($hDestFilename, StringRegExpReplace($sDestFile, '.+\\(.+)', '$1'))
    $hFile = FileOpen($sDestFile, 2)
    If $hFile <> -1 Then
    FileWrite($hFile, $sSource)
    FileClose($hFile)
    EndIf
    GUICtrlSetData($hDestFilesize, _StringAddThousandsSep(FileGetSize($sDestFile), '.', ',') & ' Bytes')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($hStatusLine, ' Run Original-Obfuscator . . . Please wait!')
    RunWait('"' & $sObfuscator & '" "' & $sDestFile & '" /cs 1 /cn 1 /cf 1 /cv 1', @ScriptDir, @SW_HIDE) ; Kopie vom Original-Obfuscator bearbeiten lassen
    $sDestFile = StringRegExpReplace($sScriptSource, '(.+)(\..+)', '$1_rnd_obfuscated$2')
    GUICtrlSetData($hStatusLine, ' Ready.')

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit] [autoit][/autoit] [autoit]

    Func _End($msg = '')
    If $msg <> '' Then MsgBox(262144+16, 'Error', $msg)
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exception($sScript)
    Local $aException
    $aException = StringRegExp($sScript, '(?i)IsDeclared\h*\((.*?)\)', 3) ; Die IsDeclared-Variablen in ein Array holen
    If IsArray($aException) Then
    For $i = 0 To UBound($aException)-1
    If StringLeft($aException[$i], 1) <> '$' Then $aException[$i] = Execute('"$" &' & $aException[$i])
    $oDictVars.Add($aException[$i], $aException[$i]) ; Die IsDeclared-Variablen mit ihrem richtigen Namen ins Wörterbuch eintragen (werden dann nicht umgewandelt)
    Next
    EndIf
    $aException = StringRegExp($sScript, '(?i)Assign\h*\((.*?),', 3) ; Die Assign-Variablen in ein Array holen
    If IsArray($aException) Then
    For $i = 0 To UBound($aException)-1
    If StringLeft($aException[$i], 1) <> '$' Then $aException[$i] = Execute('"$" &' & $aException[$i])
    $oDictVars.Add($aException[$i], $aException[$i]) ; Die Assign-Variablen mit ihrem richtigen Namen ins Wörterbuch eintragen (werden dann nicht umgewandelt)
    Next
    EndIf
    _GetIncludeConsts($oDictVars, StringRegExpReplace(@AutoItExe, '(.+\\).+', '$1') & 'Include')
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _RandomVar()
    Local $sVar
    Do
    $sVar = '$' & Chr(Random(65, 90, 1))
    For $i = 0 To 7
    $sVar &= Chr(Random(48, 57, 1))
    Next
    Until Not $oDictHelpV.Exists($sVar)
    $oDictHelpV.Add($sVar, $sVar)
    Return $sVar
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _RandomFunc()
    Local $sFunc
    Do
    $sFunc = Chr(Random(65, 90, 1))
    For $i = 0 To 8
    $sFunc &= Chr(Random(48, 57, 1))
    Next
    Until Not $oDictHelpF.Exists($sFunc)
    $oDictHelpF.Add($sFunc, $sFunc)
    Return $sFunc
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetIncludeConsts(ByRef $oDict, $sPath)
    Local $aIncludeFiles, $sFile, $aConstants
    $aIncludeFiles = _MyFileListToArray($sPath, '*.au3') ; alle Standard-Include-Dateinamen einlesen
    If Not IsArray($aIncludeFiles) Then _End('ERROR! Include-Files not found!')
    For $sInclude In $aIncludeFiles ; alle Include-Dateien durchgehen
    $sFile = FileRead($sPath & '\' & $sInclude) ; Include-Datei einlesen
    $aConstants = StringRegExp($sFile, '(?s)(?:Global|Global Const) (\$.+?)(?:\;|\,|\h)', 3) ; alle Konstanten aus der Include-Datei holen
    If IsArray($aConstants) Then ; wenn welche gefunden wurden, dann...
    For $sConstant In $aConstants ; der Reihe nach durchgehen
    If Not $oDict.Exists($sConstant) Then $oDict.Add($sConstant, $sConstant) ; wenn nicht im Dictionary vorhanden, diesem hinzufügen
    Next
    EndIf
    Next
    EndFunc ;==>_GetIncludeFuncsAndConsts

    [/autoit] [autoit][/autoit] [autoit]

    Func _MyFileListToArray($sPath, $sFilter)
    Local $sFileList = '', $hSearch, $sFile
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $hSearch = FileFindFirstFile($sPath & $sFilter)
    If @error Then Return
    Do
    $sFile = FileFindNextFile($hSearch)
    If @extended Then ContinueLoop
    $sFileList &= $sFile & '|'
    Until @error
    FileClose($hSearch)
    If $sFileList = '' Then Return
    Return StringSplit(StringTrimRight($sFileList, 1), '|', 2)
    EndFunc ;==>_MyFileListToArray

    [/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _StringAddThousandsSep
    ; Description ...: Returns the original numbered string with the Thousands delimiter inserted.
    ; Syntax.........: _StringAddThousandsSep($sString[, $sThousands = -1[, $sDecimal = -1]])
    ; Parameters ....: $sString - The string to be converted.
    ; $sThousands - Optional: The Thousands delimiter
    ; $sDecimal - Optional: The decimal delimiter
    ; Return values .: Success - The string with Thousands delimiter added.
    ; Author ........: SmOke_N (orignal _StringAddComma
    ; Modified.......: Valik (complete re-write, new function name)
    ; Remarks .......:
    ; Related .......:
    ; Link ..........;
    ; Example .......; Yes
    ; ===============================================================================================================================
    Func _StringAddThousandsSep($sString, $sThousands = -1, $sDecimal = -1)
    Local $sResult = "" ; Force string
    Local $rKey = "HKCU\Control Panel\International"
    If $sDecimal = -1 Then $sDecimal = RegRead($rKey, "sDecimal")
    If $sThousands = -1 Then $sThousands = RegRead($rKey, "sThousand")
    Local $aNumber = StringRegExp($sString, "(\D?\d+)\D?(\d*)", 1) ; This one works for negatives.
    If UBound($aNumber) = 2 Then
    Local $sLeft = $aNumber[0]
    While StringLen($sLeft)
    $sResult = $sThousands & StringRight($sLeft, 3) & $sResult
    $sLeft = StringTrimRight($sLeft, 3)
    WEnd
    $sResult = StringTrimLeft($sResult, StringLen($sThousands)) ; Strip leading thousands separator
    If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
    EndIf
    Return $sResult
    EndFunc ;==>_StringAddThousandsSep

    [/autoit]

    Aber auch der verhindert nicht, dass man entsprechende Informationen (zum hacken der HiScoreListe) aus dem Quelltext auslesen kann (genügend Geduld vorausgesetzt).

    Dateien

    RandomObfuscator2.au3 11,13 kB – 813 Downloads
  • PixelSearch - erst reagieren wenn Fläche 4x6 Pixel ist?

    • Oscar
    • 18. April 2010 um 21:05

    Könntest Du mal ein oder mehrere Beispielbilder zur Verfügung stellen?
    Ich denke, man könnte da auch direkt in den Bilddaten der Datei suchen.

  • PixelSearch - erst reagieren wenn Fläche 4x6 Pixel ist?

    • Oscar
    • 18. April 2010 um 15:04

    Was willst Du denn erreichen?
    Vielleicht (meistens) gibt es einen anderen Weg.

  • Happy Birthday

    • Oscar
    • 18. April 2010 um 13:21

    Alles Gute zum Geburtstag!

    von einem der so alt ist, wie ihr beide zusammen. :whistling:

  • Transparenz bei Labels funktioniert nicht!

    • Oscar
    • 18. April 2010 um 08:08

    Wegen wiederholtem Verstoss gegen die Forenregeln gibt es jetzt eine Verwarnung! :cursing:
    [Thread closed]

  • progress als slider

    • Oscar
    • 18. April 2010 um 01:01

    Oder das hier als Beispiel:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    $hGui = GUICreate('Test', 400, 300)
    GUISetBkColor(0xCCCCCC)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 0)
    $hProgress = GUICtrlCreateProgress(10, 30, 350, 20)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 7)
    $hLabel = GUICtrlCreateLabel('0%', 365, 32, 35, 20)
    GUISetState()
    $aPos = ControlGetPos($hGui, '', $hProgress)

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_PRIMARYUP
    $aInfo = GUIGetCursorInfo($hGui)
    If $aInfo[4] = $hProgress Then
    $iPercent = 100 / $aPos[2] * ($aInfo[0] - $aPos[0])
    GUICtrlSetData($hProgress, $iPercent)
    GUICtrlSetData($hLabel, Int($iPercent) & '%')
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Netzwerkauslastung?

    • Oscar
    • 17. April 2010 um 17:15

    Hatte ich mal geschrieben:

    Spoiler anzeigen
    [autoit]


    HotKeySet('{ESC}', '_End')
    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = 'localhost'
    $NetworkAdapter = 'Marvell Yukon 88E8053 PCI-E Gigabit Ethernet Controller' ; hier den Namen des Netzwerkadapters eintragen

    [/autoit] [autoit][/autoit] [autoit]

    $Output=""
    $Output &= 'Computer: ' & $strComputer & @CRLF
    $Output &= '==========================================' & @CRLF
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\')
    While True
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_PerfFormattedData_Tcpip_NetworkInterface', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) Then
    For $objItem In $colItems
    If $objItem.Name = $NetworkAdapter Then
    $Output = 'BytesReceivedPersec: ' & $objItem.BytesReceivedPersec & @CRLF
    $Output &= 'BytesSentPersec: ' & $objItem.BytesSentPersec & @CRLF
    $Output &= 'BytesTotalPersec: ' & $objItem.BytesTotalPersec & @CRLF
    ToolTip($Output, @DesktopWidth / 2 - 200, 20, 'Network-Traffic')
    EndIf
    Next
    Else
    $Output &= 'No WMI Objects Found for class: ' & 'Win32_PerfFormattedData_Tcpip_NetworkInterface'
    Endif
    Sleep(50)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _End()
    Exit
    EndFunc

    [/autoit]
  • Checkbox + Radio

    • Oscar
    • 17. April 2010 um 11:59

    Checkboxen auslesen mit:

    [autoit]

    If BitAND(GUICtrlRead($Checkbox), $GUI_CHECKED) Then ...

    [/autoit]
  • _GUICtrlRichEdit_Create ohne blinkender Cursor

    • Oscar
    • 17. April 2010 um 10:40

    Meine Chatbox-UDF unterstützt BB-Codes.
    Wenn Du Dich mit HTML auskennst kannst Du den Text aber auch selbst damit formatieren und in einem eingebetteten IE darstellen. Das macht im Prinzip meine UDF.

  • Rechner verbessern , Prozessor & Co

    • Oscar
    • 17. April 2010 um 10:34

    Ja, wenn Du DDR-RAM neu kaufen musst/willst, dann wird es teuer.
    Ganz anders sieht es da bei uns hier in der Tauschbörse aus. Vielleicht versuchst Du es dort mal mit einer Suche (RAM und CPU).
    Mein letztes DDR-RAM hat dort bereits einen neuen Besitzer gefunden. :)

  • Rechner verbessern , Prozessor & Co

    • Oscar
    • 17. April 2010 um 10:02

    Den Arbeitsspeicher wirst Du noch irgendwo bekommen (z.B. bei Atelco). Schlechter sieht es da mit dem Prozessor aus.
    Eine Sockel 939 CPU bekommst Du vermutlich nur noch bei Ebay oder auf dem Flohmarkt. Beides höchst zweifelhafte Quellen, da man nie weiß, wie der Vorbesitzer damit umgegangen ist (sprich: übertakten, korrekte Kühlung, usw.).

    Oder kennt jemand hier eine verlässliche Quelle für so alte Prozessoren?

  • _GUICtrlRichEdit_Create ohne blinkender Cursor

    • Oscar
    • 17. April 2010 um 09:22

    Wenn Du keine Eingabe benötigst, dann könntest Du auch meine Chatbox-UDF verwenden. :)

  • XGWorks Patch?

    • Oscar
    • 15. April 2010 um 18:48

    Eine Suchmaschine zu bedienen muss ja unwahrscheinlich schwer sein: :P

    XG Works unter Vista

  • Fehler - Tray OnClick funkt. nicht *heul*

    • Oscar
    • 15. April 2010 um 17:54

    Das Traymenü fragt man auch mit TrayGetMsg (nicht GUIGetMsg) ab. ^^

  • StringReplace Zeilenumbruch erhalten

    • Oscar
    • 15. April 2010 um 17:47

    Hmm...kannst Du mal eine solche Datei (komplett) posten und dazuschreiben, was Du davon haben willst (und in welchem Format)?
    Bei den Bildern: sollen die in den extrahierten Text eingebunden sein?
    Können auf einer Seite mehrere Bilder vorkommen? Sollen alle extrahiert werden?

    Edit: Ok, zu spät. :)

  • StringReplace Zeilenumbruch erhalten

    • Oscar
    • 15. April 2010 um 17:39

    Bilder? Wo sind denn da Bilder enthalten?

  • StringReplace Zeilenumbruch erhalten

    • Oscar
    • 15. April 2010 um 17:20

    Ach, man muss doch gar nicht so viel umwandeln (wenn es nur HTML sein soll). Das meiste ist doch gleich. :whistling:

    So reicht doch:

    Spoiler anzeigen
    [autoit]


    $sSourcefile = @ScriptDir & '\OC91F8.txt'
    $sTargetfile = @ScriptDir & '\OC91F8.html'

    [/autoit] [autoit][/autoit] [autoit]

    $sText = FileRead($sSourcefile)
    $sDescription = StringRegExpReplace($sText, '(?s).+<description html="true">(.+)</description>.+', '$1')
    Dim $aReplace[3][2] = [['&lt;', '<'],['&gt;', '>'],['&amp;', '&']]
    For $i = 0 To UBound($aReplace) - 1
    $sDescription = StringReplace($sDescription, $aReplace[$i][0], $aReplace[$i][1])
    Next
    $hFile = FileOpen($sTargetfile, 2)
    If $hFile = -1 Then Exit
    FileWrite($hFile, '<html><body>')
    FileWrite($hFile, $sDescription)
    FileWrite($hFile, '</body></html>')
    FileClose($hFile)
    ShellExecute(@ProgramFilesDir & '\Internet Explorer\iexplore.exe', $sTargetfile)

    [/autoit]
  • StringReplace Zeilenumbruch erhalten

    • Oscar
    • 15. April 2010 um 16:58

    Also willst Du nach dem extrahieren wieder HTML haben?

    Spoiler anzeigen
    [autoit]


    $sSourcefile = @ScriptDir & '\OC91F8.txt'
    $sTargetfile = @ScriptDir & '\OC91F8.html'

    [/autoit] [autoit][/autoit] [autoit]

    $sText = FileRead($sSourcefile)
    $sDescription = StringRegExpReplace($sText, '(?s).+<description html="true">(.+)</description>.+', '$1')
    Dim $aReplace[9][2] = [['&lt;p&gt;', '<p>'],['&lt;/p&gt;', '</p>'],['&amp;nbsp;', '&nbsp;'], _
    ['&amp;ouml;', '&ouml;'],['&amp;uuml;', '&uuml;'],['&amp;auml;', '&auml;'], _
    ['&amp;szlig;', '&szlig;'],['&amp;deg;', '&deg;'],['&lt;br /&gt;', '<br />']]
    For $i = 0 To UBound($aReplace) - 1
    $sDescription = StringReplace($sDescription, $aReplace[$i][0], $aReplace[$i][1])
    Next
    $hFile = FileOpen($sTargetfile, 2)
    If $hFile = -1 Then Exit
    FileWrite($hFile, '<html><body>')
    FileWrite($hFile, $sDescription)
    FileWrite($hFile, '</body></html>')
    FileClose($hFile)
    ShellExecute(@ProgramFilesDir & '\Internet Explorer\iexplore.exe', $sTargetfile)

    [/autoit]
  • Datei nach regionen auslesen

    • Oscar
    • 15. April 2010 um 08:43

    Das hier ist falsch:

    [autoit]

    If Not $LineToAdd = "#Region Includes" Or "#EndRegion" Then ...

    [/autoit]

    Soll wahrscheinlich so lauten:

    [autoit]

    If $LineToAdd <> "#Region Includes" And $LineToAdd <> "#EndRegion" Then ...

    [/autoit]

    Du hast das in Deinem Script mehrmals gemacht.

  • StringReplace Zeilenumbruch erhalten

    • Oscar
    • 15. April 2010 um 08:29

    Was ist das denn für eine HTML-Kodierung? Kannst Du die Seite nicht anders auslesen?

    Wenn nein, musst Du halt alles umwandeln:

    Spoiler anzeigen
    [autoit]


    $sText = FileRead(@ScriptDir & '\OC91F8.txt')
    $sDescription = StringRegExpReplace($sText, '(?s).+<description html="true">(.+)</description>.+', '$1')
    Dim $aReplace[9][2] = [['&lt;p&gt;', ''],['&lt;/p&gt;', @CRLF],['&amp;nbsp;', ' '], _
    ['&amp;ouml;', 'ö'],['&amp;uuml;', 'ü'],['&amp;auml;', 'ä'], _
    ['&amp;szlig;', 'ß'],['&amp;deg;', '°'],['&lt;br /&gt;', @CRLF]]
    For $i = 0 To UBound($aReplace) - 1
    $sDescription = StringReplace($sDescription, $aReplace[$i][0], $aReplace[$i][1])
    Next
    MsgBox(0, 0, $sDescription)

    [/autoit]


    So hast Du dann wieder einen lesbaren Text.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™