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. Friesel

Beiträge von Friesel

  • Regedit navigieren Win 10

    • Friesel
    • 2. August 2015 um 22:44
    Zitat von Tweaky

    Ich will lediglich in der Regedit zu einem bestimmten Zweig springen.

    Dafür gibt es von Microsoft ein schickes, kleines Tool, namens RegJump.
    Lässt sich ganz einfach durch AutoIt mit einem Registry Schlüssel als Parameter starten, benötigt allerdings Adminrechte.

    Damit habe ich zB ein Firefox-plugin geschrieben mit dem man im Browser markierte Registry Schlüssel direkt anspringen kann...sehr praktisch

    LG Friesel


    P.s.: Beim ersten Aufruf muss man eine Eula akzeptieren, was man aber auch durch folgenden Registry Eintrag erledigen kann, damit das Popup nicht nervt:

    AutoIt
    RegWrite("HKEY_CURRENT_USER\Software\Sysinternals\Regjump", "EulaAccepted", "REG_DWORD", "1")

    Ist natürlich nicht im Sinne des Erfinders und sicherlich nicht erlaubt... :/

  • rundes Fenster - rahmenlos - beliebige Fensterformen - geht sowas mit Autoit

    • Friesel
    • 16. Juni 2015 um 23:07

    Moin!

    Ich habe mal einen Spiele-Launcher geschrieben und mit Hilfe dieses Threads folgendes Fenster erstellt:
    ________________________________________________________________________________________________________________________________
    [Blockierte Grafik: http://i.imgur.com/3JfC0Cy.jpg]
    ________________________________________________________________________________________________________________________________

    Das war allerdings vor über 2 Jahren und seit dem habe ich mich mit sowas nicht mehr beschäftigt. Zu allem Überfluss ist auch noch der Source Code einem Festplattenversagen zum Opfer gefallen
    Deshalb kann ich dir leider kaum weiterhelfen. Wollte nur zeigen, was so geht und auf den Thread oben verweisen...

    LG Friesel

  • Gefilterte Eingabe: InputFilter.au3 (1.1)

    • Friesel
    • 12. Juni 2015 um 19:53
    Zitat von Oscar

    Für eine Eingabe von Uhrzeiten würde ich lieber ein Date-Control verwenden.
    Das ist einfach und hat den Vorteil, dass man sich nicht um Fehleingaben kümmern muss (passiert automatisch).

    AutoIt
    #include <DateTimeConstants.au3>
    $hGui = GUICreate('Uhrzeit-Test', 220, 130)
    $idDate = GUICtrlCreateDate('', 60, 50, 100, 30, $DTS_TIMEFORMAT)
    GUICtrlSetFont(-1, 12, 400, 0, 'Arial', 5)
    GUISetState()
    Do
    Until GUIGetMsg() = -3

    Moin!

    Entschuldigung für meine Off-Topic-Frage, aber kann man bei GUICtrlCreateDate auch einstellen, dass bei Benutzung der UpDown-Controls mit den Sekunden begonnen wird? Standardmässig gehts nämlich bei Stunden los.
    Wusste übrigens garnicht, dass man ein Date-Control auch ohne Date benutzen kann, also nur mit Uhrzeit. Danke für den Hinweis, Oscar!

  • Brauche Hilfe zu StringRegExp (Neu)

    • Friesel
    • 8. Juni 2015 um 20:58
    Zitat von bernd670

    Nur mal zur Info,id=".*_(.+)" .+src="text/bild1.+" benötigt 1532 Schritte bis die ID gefunden wird und id=".*?(\d+)".+src="text/bild1.+" nur 220 Schritte, ist also rund 7 mal schneller!

    Ich entschuldige ich mich für die falsche Info!
    Danke für die Korrektur. Jetzt hab ich gesehn, dass das Programm "Regex Buddy" auch eine Debug-Funktion hat. Sehr aufschlussreich.
    Ich hätte zB gedacht, dass (.+) schneller ist, als (\d+), weil nicht nach speziellen Typen gesucht, sondern einfach alles gefangen wird, aber offensichtlich ist genau der umgekehrte Fall zutreffend...

    *edit*
    AspirinJunkie: z.B. die Debug Funktion von Regex Buddy

  • Backreferenz bei StringRegExpReplace nur eingeschränkt möglich

    • Friesel
    • 8. Juni 2015 um 18:42

    Moin!

    Könnte es sein, dass die PCRE-Engine, die AutoIt meines Wissens benutzt, Probleme macht?

    [Blockierte Grafik: http://i.imgur.com/GRPMl7B.png]

    Das ist natürlich keine Erklärung dafür, warum der Ausdruck mit StringRegExp funktioniert und mit StringRegExpReplace nicht, aber vieleicht ein erster Hinweis.

  • Brauche Hilfe zu StringRegExp (Neu)

    • Friesel
    • 8. Juni 2015 um 18:27

    Hi!

    Keine Ahnung, was du da machst, aber folgender Code:

    AutoIt
    #include <Array.au3>
    
    
    $html = ClipGet()
    $aIDs = StringRegExp($html, 'id=".*_(.+)" .+src="text/bild1.+"', 3)
    If IsArray($aIDs) Then
    	_ArrayDisplay($aIDs)
    Else
    	MsgBox(0, "Nix", "Nichts gefunden!")
    EndIf

    führt zu folgendem Ergebnis:

    [Blockierte Grafik: http://i.imgur.com/GTBi4bg.png]

    Immer vorausgesetzt natürlich, dass sich der komplette Beispieltext in der Zwischenablage befindet...

  • Brauche Hilfe zu StringRegExp (Neu)

    • Friesel
    • 7. Juni 2015 um 20:35

    Moin!

    Falls die ID immer gleich aufgebaut ist, lässt sich das Ganze noch weiter vereinfachen, was auch theoretisch etwas schneller sein sollte, weil weniger überprüft werden muss.

    Voraussetzung für Aufbau der ID: "irgendwas_irgendwas_nummer", also muss man nur das "fangen", was zwischen dem zweiten Unterstrich und den Anführungszeichen ist.

    AutoIt
    $aIDs = StringRegExp($html, 'id=".*_(.+)" .+src="text/bild1.+"', 3)


  • Brauche Hilfe zu StringRegExp (Neu)

    • Friesel
    • 5. Juni 2015 um 22:45

    Moin!

    Wenn der String immer so aussieht, wie oben, gehts ganz einfach:

    AutoIt
    #include <Array.au3>
    
    
    $html = ClipGet()
    $aIDs = StringRegExp($html, 'id="(.+)" .+src="text/bild1.+"', 3)
    If IsArray($aIDs) Then
    	_ArrayDisplay($aIDs)
    Else
    	MsgBox(0, "Nix", "Nichts gefunden!")
    EndIf

    Der Einfachheit halber muss sich der obige String in der Zwischenablage befinden...

  • Frage zu vergleichende Operatoren

    • Friesel
    • 5. Juni 2015 um 01:54

    Moin!

    Hier mein Vorschlag zum Thema:

    AutoIt
    Dim $array[3]
    
    
    $array[0] = ""
    $array[1] = 0
    $array[2] = 1
    
    
    For $i = 0 to 2
    	If String($array[$i]) = "" Then MsgBox(0, "", "Feld Nr. " & $i & " ist 'Leer'")
    Next
    Alles anzeigen

    Ist semantisch wahrscheinlich nicht ganz ok, aber so klappts auf jeden Fall...

  • Werte aus ini File in Combobox

    • Friesel
    • 26. April 2015 um 23:32

    Moin!

    Hier mal ne "Quick and Dirty" Variante ohne ini-Befehle, dafür mit RegEx:

    AutoIt
    #include "Array.au3"
    
    
    ;~ $sBeispiel = FileRead("pfadZurIni\Ini.ini")
    
    
    $sBeispiel = '[001]' & @CRLF & _
    			 'Abteilung = "Abt.1"' & @CRLF & _
    			 'Name = "MA.1"' & @CRLF & _
    			 'Gruppe = 1' & @CRLF & _
    			 '[002]' & @CRLF & _
    			 'Abteilung = "Abt.1"' & @CRLF & _
    			 'Name = "MA.2"' & @CRLF & _
    			 'Gruppe = 1' & @CRLF & _
    			 '[003]' & @CRLF & _
    			 'Abteilung = "Abt.1"' & @CRLF & _
    			 'Name = "MA.3"' & @CRLF & _
    			 'Gruppe = 1'
    
    
    $aNamen = StringRegExp($sBeispiel, '(?i)Name.*=.*"(.+)"', 3)
    $sNamen = _ArrayToString($aNamen)
    
    
    GUICreate("Alle Namen")
    $idCombo = GUICtrlCreateCombo("", 100, 100)
    $sFirstSel = ""
    If IsArray($aNamen) Then $sFirstSel = $aNamen[0] ; nur um zu verhindern, dass das Programm abstürzt, wenn nichts gefunden wurde
    GUICtrlSetData($idCombo, $sNamen, $sFirstSel)
    
    
    GUISetState()
    
    
    Do
    Until GUIGetMsg() = -3
    Alles anzeigen


  • Variable als INI behandeln?

    • Friesel
    • 16. April 2015 um 09:24

    Jo, stimmt, den Fall hatte ich übersehn. Hab jetzt aber keine Zeit das umzuschreiben. Mache ich heute nachmittag...

  • Variable als INI behandeln?

    • Friesel
    • 16. April 2015 um 03:21

    Moin!

    Wie chesstiger schon sagte, ist RegEx der "Schlüssel" :rolleyes:
    Kann man sehr kompakt mit nem Ein-Zeiler lösen.
    Gibt bestimmt schönere Pattern, aber meiner funktioniert soweit gut:

    [autoit]

    ;~ $sIni = FileRead("C:\beliebigeDatei.beliebigerSuffix");solange die Datei Text nach "Ini-Standard" enthält funktionierts

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

    ;nur eine Demo-INI ==> kann weg
    $sIni = "[Sektion1]" & @CRLF & _
    "Key1=1234" & @CRLF & _
    "Schlüssel1=Hallo, ich bin ein Schlüssel aus Sektion 1!" & @CRLF & _
    "CaseSense=Gross-/Kleinschreibung ist nicht relevant" & @CRLF & _
    "[Sektion2]" & @CRLF & _
    "Schlüssel1=Hallo, ich bin ein Schlüssel aus Sektion 2!" & @CRLF & _
    "Schluessel2=Ich auch!"
    ;nur eine Demo-INI ==> kann weg

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

    $sIni &= @CRLF ;ohne abschliessenden Zeilenumbruch wird die letzte Zeile nicht gefunden

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

    $sIniRead = _IniRead($sIni, "Sektion1", "Schlüssel1", "Standard")
    MsgBox(0, "", $sIniRead)
    $sIniRead = _IniRead($sIni, "Sektion2", "Schlüssel1", "Standard")
    MsgBox(0, "", $sIniRead)
    $sIniRead = _IniRead($sIni, "Sektion2", "Schluessel2", "Standard")
    MsgBox(0, "", $sIniRead)
    $sIniRead = _IniRead($sIni, "seKtion1", "cASEsENSE", "Standard")
    MsgBox(0, "", $sIniRead)
    $sIniRead = _IniRead($sIni, "Sektion2", "Streuselkuchen", "kuchen")
    MsgBox(0, "", "Streusel" & $sIniRead)

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

    Func _IniRead($sText, $sSection, $sKey, $sDefault)
    $aHits = StringRegExp($sText, "(?i)(?s)\[" & $sSection & "\].+?" & $sKey & "=(.+?)\r\n", 3)
    If IsArray($aHits) Then Return $aHits[0]
    Return $sDefault
    EndFunc

    [/autoit]

    Xorianator: Weder "STRG-T" noch sonstiges Hexenwerk helfen bei der neuen Boardsoftware. Sämtliche Formatierung wird gnadenlos zerschossen...

  • Programm startet zu häufig!! -- $cmdline fehler?

    • Friesel
    • 4. April 2015 um 10:55

    Moin!

    Da kann man misterspeed nur Recht geben, sowas mit _ispressed zu "versuchen" ist ziemlicher Murks. Ich finds sogar haarsträubend...
    Hier mal mein Vorschlag dazu, mit einem etwas anderen Ansatz und um eine "Refresh"-Funktion erweitert.
    Ob es sinnvoll ist, möglichst wenige globale Variablen zu verwenden wurde hier schon des öfteren diskutiert. Ich bin mir selber nicht sicher, finde es so aber deutlich übersichtlicher:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <File.au3>

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

    Opt("GUIOnEventMode", 1) ; OnEvent ist meiner Meinung nach besser fuer diese Art Programm geeignet

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

    ;Das Programm hat nur 3 globale Variablen
    ;Die Fileliste, die Button IDs und das Fenster Handle; alles Andere wird nur lokal benötigt
    ;Schluesselwort Global hier eigendlich ueberfluessig, da es auf der untersten Ebene NUR globale Variablen gibt
    Global $aFileList = _FileListToArray(@ScriptDir, "*.exe")
    If @error Then Exit ; Keine Exe'n, kein Programm. Allerdings wird logischerweise die Programm-Exe selbst immer gefunden, was man noch beruecksichtigen sollte
    Global $aidButtons[$aFileList[0] + 1]

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

    Global $hGui = _GuiCreateCustom() ; Vermeidung ueberfluessiger Globaler Variablen (sinnvoll???)

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

    GUISetState(@SW_SHOW, $hGUI)

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

    While Sleep(3000)
    WEnd

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

    Func _Central()
    ; @GUI_CtrlId ist abhängig vom Zeitpunkt an dem sie während der GUI-Erstellung angelegt werden
    ConsoleWrite(@GUI_CtrlId - $aidButtons[1] + 1 & @CRLF)
    ShellExecute(@ScriptDir & "\" & $aFileList[@GUI_CtrlId - $aidButtons[1] + 1], "-start") ; +1 Versatz wegen Refresh Button
    EndFunc

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

    Func _Refresh() ; keine schoene Funktion, aber sie laeuft und ist unkompliziert ;)
    Local $iXpos = Default, $iYpos = Default
    $aFileList = _FileListToArray(@ScriptDir, "*.exe")
    If @error Then Exit
    ReDim $aidButtons[$aFileList[0] + 1]
    $aWinPos = WinGetPos($hGui) ; Position des alten Fensters merken
    If IsArray($aWinPos) Then ; reiner Aberglaube um Arrayfehlern vorzubeugen ;)
    $iXpos = $aWinPos[0]
    $iYpos = $aWinPos[1]
    EndIf
    GUIDelete($hGui)
    $hGui = _GuiCreateCustom($iXpos, $iYpos)
    GUISetState(@SW_SHOW, $hGUI)
    EndFunc

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

    Func _GuiCreateCustom($iX = Default, $iY = Default)
    Local $iButtonWidth = 180, $iButtonHeight = 24
    Local $iHeight = 18 + ($iButtonHeight + 4) * ($aFileList[0] + 1) ; +1 Versatz wegen Refresh Button
    Local $hG = GUICreate("Multitool", 20 + $iButtonWidth, $iHeight, $iX, $iY)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $aidButtons[0] = GUICtrlCreateButton("Refresh", 10, 10, $iButtonWidth, $iButtonHeight) ;Refresh Button als erstes
    GUICtrlSetOnEvent(-1, "_Refresh")
    For $i = 1 To $aFileList[0]
    $iYpos = 10 + ($iButtonHeight + 4) * ($i - 0)
    $aidButtons[$i] = GUICtrlCreateButton(StringTrimRight($aFileList[$i], 4), 10, $iYpos, $iButtonWidth, $iButtonHeight)
    GUICtrlSetOnEvent(-1, "_Central")
    Next
    Return $hG ;Fensterhandle rurueckgeben
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    Für die Formatierng kann ich nix, das neue Forum ist Schuld ;(

  • Netzwerkadapter de & aktivieren

    • Friesel
    • 1. September 2014 um 17:32

    Moin!

    Versuchs dochmal mit netsh.

    [autoit]

    #RequireAdmin

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

    $sLANadapter = "WiFi"

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

    RunWait("netsh interface set interface " & $sLANadapter & " disabled", "", @SW_HIDE)
    RunWait("netsh interface set interface " & $sLANadapter & " enabled", "",@SW_HIDE)

    [/autoit]

    Geht leider nur mit Administratorrechten...

    Die Namen der vorhandenen Adapter kannst du zB so auslesen (Administratorrechte nicht benötigt):

    [autoit]

    #include <AutoItConstants.au3>

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

    $iRun = Run("netsh interface show interface", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    While 1
    Local $sLineAll
    $line = StdoutRead($iRun)
    If @error Then ExitLoop
    $sLineAll &= $line
    WEnd

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

    MsgBox(0, "", $sLineAll)

    [/autoit]


    Nachtrag:
    Mit "Run", so wie Phil-IT es unterhalb vorschlägt, wird es eher nicht funktionieren, da der Befehl den Adapter wieder zu aktivieren, durchgeführt wird, bevor dieser überhaupt deaktiviert wurde, daher sollte man "RunWait" verwenden.


    Sanfte Grüße :D

  • Fehler oder normal?

    • Friesel
    • 30. August 2014 um 00:57

    Moin!

    Dein Code-Fragement enthält auf jeden Fall schonmal einen Fehler:
    Du verwendest negative Werte als Transparenzparameter, diese reichen aber nur von 0 (nicht sichtbar) bis +255 (voll sichtbar).

    Die Schleife muss also so aussehen, um ein Fenter einzublenden:

    [autoit]

    For $i = 0 To 255 Step 5
    WinSetTrans($hGui, "", $i)
    Sleep(10)
    Next

    [/autoit]


    Zum Ausblenden eines Fensters:

    [autoit]

    For $i = 255 To 0 Step -5
    WinSetTrans($hGui, "", $i)
    Sleep(10)
    Next

    [/autoit]
  • Autoit Backup Ordner

    • Friesel
    • 25. August 2014 um 10:21
    Zitat von Oscar

    Die Muster-Ini liegt in: "%LOCALAPPDATA%\AutoIt v3\SciTE\Tidy\"


    Danke für den Hinweis, dort hatte ich nicht nachgeschaut, nur im eigendlichen Tidy Verzeichnis.
    Wie auch immer, ich hatte es auch schon erfolglos mit der mit dem Parameter /backupdir= und /backupdir="" in den Tidy Optionen (Scite Menü) versucht.
    Mit deiner INI funktioniert es leider auch nicht...

  • Autoit Backup Ordner

    • Friesel
    • 25. August 2014 um 09:24
    Zitat von BugFix

    [...}Im Tidy-Ordner gibt es eine Muster-INI. [...}Also eine Tidy.INI erstellen und dort die Versionszahl auf "0" setzen.[...}So wie ich das verstehe, sollte es aber ein Backup unterbinden.


    Da diese "Muster-INI" bei mir nicht existiert bin ich nicht weiter darauf eingegangen, aber laut Beschreibung in Scite -> Menü -> Compile -> Tidy -> Tidy Prameters bedeutet 0 dass alle Backups erhalten bleiben sollen.

    Code
    /kv n  : n = number of backcopies to keep. 0 = all
  • Autoit Backup Ordner

    • Friesel
    • 25. August 2014 um 04:36
    Zitat von Lottich

    ´Türlich. Wenn du genau hin siehst, dann kanst du was von "Backup Strategy" lesen. Das ist genau das, was du willst...

    ...das hier NICHT anklicken...

    Warum muss man eigentlich die meisten Leute immer direkt und mit aller Kraft mit der Nase auf des Rätsels simpelster Lösung draufdrücken???

    Diese "Backup Strategy" bewirkt nur, dass beim ändern/speichern des Skriptes eine Kopie mit der Endung *.BAK im Skriptverzeichnis erstellt wird, ein Verzeichnis Namens "BackUp" wird nicht angelegt.

    Meines Wissens wird dieses BackUp-Verzeichnis von Tidy erstellt (Menü -> Tools -> Tidy AutoIt Source bzw. <CTRL+T>).
    Leider weiß ich nicht, wie man das abstellen kann (Google war ausnahmsweise mal nicht mein Freund ;( ), aber du könntest zB ein zentrales Verzeichnis für alle Backups anlegen, dann nervts nicht mehr in deinem Skriptverzeichnis.
    Abgesehen davon sollte man wirklich nicht auf Backups verzichten...

    Dieses Verhalten kannst du in den au3.properties ändern (Menü -> Options -> Open au3.properties). Einfach nach "Tidy" suchen und die Zeile

    Code
    command.9.$(au3)="$(SciteDefaultHome)\tidy\tidy.exe" "$(FilePath)"


    ändern in:

    Code
    command.9.$(au3)="$(SciteDefaultHome)\tidy\tidy.exe" "$(FilePath)" /bdir="Hier dein zentrales Backup-Verzeichnis eintragen"

    Noch einfacher kannst du auch in Scite -> Menü -> Compile -> Tidy -> Tidy Prameters diesen Parameter einfügen, aber das musst du (glaube ich) für jedes Skript einzeln tun...


    Sanfte Grüße :D

  • Auslesen Inhalt von lokaler Webseite in Variable

    • Friesel
    • 20. August 2014 um 23:43
    Zitat von rynow

    Lies von der Seite den HTML Code mit:

    [autoit]

    Local $sHTML = _IEDocReadHTML($oIE)

    [/autoit]

    Ich würde die Seite mit InetRead auslesen, dann kann man sich das Erstellen eines IE-Objektes (was letzten Endes einen IE im Hintergrund öffnet) sparen.

    So zum Beispiel:

    [autoit]

    #include <array.au3> ;==> nur für _ArrayDisplay benötigt, kann sonst weg

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

    $sSite = "Hier kommt die URL rein"
    $sHtml = BinaryToString(InetRead($sSite))

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

    $aTreffer = StringRegExp($sHtml, '(?i)maxLength=\d+ value="(.+?)" name=', 3)
    If @error Then MsgBox(0, "", "Keine Übereinstimmung gefunden!")
    _ArrayDisplay($aTreffer)

    [/autoit]


    Sanfte Grüße :D

  • Auslesen Inhalt von lokaler Webseite in Variable

    • Friesel
    • 20. August 2014 um 23:18

    Moin!

    Wenn die Zeile einzigartig ist, bzw wenn alle Vorkommen mit value="" gefiltert werden sollen, kannst du folgenden RegEx verwenden:

    [autoit]

    $aTreffer = StringRegExp($sHtml, '(?i)value="(.+?)"', 3)

    [/autoit]


    Bedeutung:
    (?i) -> Case insensitive (Groß-/Kleinschreibung ist egal)
    value=" -> muss genau so vorkommen
    (.+?) -> ein bis unendlich viele beliebige Zeichen. Nur was in Klammern ist, kommt als Treffer ins Array
    " -> muss genau so vorkommen. Durch das ? im vorhergehenden Teil wird genau bis hier gefiltert, sonst wird das Anführugszeichen übergangen

    Du kannst den Pattern auch weiter eingrenzen, zB so:

    [autoit]

    $aTreffer = StringRegExp($sHtml, '(?i)maxLength=\d+ value="(.+?)" name=', 3)

    [/autoit]


    Bedeutung:
    (?i) -> Case insensitive (Groß-/Kleinschreibung ist egal)
    maxLength= -> muss genau so vorkommen
    \d+ -> eine beliebige Zahl mit einer bis unendlich vielen Stellen
    value=" -> muss genau so vorkommen (Leerzeichen am Anfang beachten)
    (.+?) -> ein bis unendlich viele beliebige Zeichen. Nur was in Klammern ist, kommt als Treffer ins Array
    " name= -> muss genau so vorkommen. Durch das ? im vorhergehenden Teil wird genau bis hier gefiltert, sonst wird das Anführugszeichen übergangen

    Beispiel:

    [autoit]

    #include <array.au3> ;==> nur für _ArrayDisplay benötigt, kann sonst weg

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

    $sHtml = '<INPUT onchange=SetDirty(); onkeypress=SetDirty(); id=txtName1 style="WIDTH: 100%; VISIBILITY: inherit" maxLength=50 value="Diesen Inhalt brauche ich" name=txtName1 wfDataFld="Name1">'

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

    $aTreffer = StringRegExp($sHtml, '(?i)value="(.+?)"', 3)
    _ArrayDisplay($aTreffer)

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

    $aTreffer = StringRegExp($sHtml, '(?i)maxLength=\d+ value="(.+?)" name=', 3)
    _ArrayDisplay($aTreffer)

    [/autoit]


    Wie du siehst, liefern beide Pattern das selbe Ergebnis, der zweite ist allerdings genauer. Um das weiter einzugrenzen, müsste ich den gensamten Quelltext kennen...

    ACHTUNG: Achte darauf, welche Art Anführungszeichen im Quelltext auftauchen (' oder und "). Ensprechend muss der Pattern Parameter im Befehl StringRegExp angepasst werden. Wenn also nur doppelte Anführungezeichen vorkommen (") muss der Pattern mit einem einzelnen (') umschlossen werden und umgekehrt. Sollten beide vorkommen, musst du den Pattern aufteilen...


    Sanfte Grüße :D

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™