Mit StringRegExp teil String überprüfen

  • Hallo zusammen,

    ich arbeite erst seit kurzem mit autoit und könnte eure Hilfe wirklich gut gebrauchen :)

    Es geht um folgendes:

    Ich habe eine Software, die ich automatisiert bedienen möchte,
    leider sind alle fenster und die meisten Schaltflächen, immer gleich benannt,
    das heißt ich habe keine Möglichkeit, die einzelnen Fenster voneinander zu unterscheiden...

    Was sich natürlich unterscheidet ist der Fenster inhalt,
    daher habe ich mir gedacht, dass es doch eigentlich möglich sein muss ein Fenster anhand des darin
    enthaltenen Textes zu idetifizieren...

    Das heißt zuerst lese ich mit WinGetText den Text inhalt aus

    und dann wollte ich den ausgelesenen String mit StringRegExp nach einem bestimmten Fragment durchsuchen...
    geht leider net ;)

    [autoit]

    $windowtext = WinGetText("SYNCING.NET", "")

    If StringRegExp($windowtext,"You will be informed when the data are downloaded.", 0)=1 Then
    WinWaitActivateClick("SYNCING.NET","Data to receive",50,"Data to receive","[REGEXPCLASS:BUTTON; INSTANCE:2]")
    EndIf

    [/autoit]

    Ich vermute mal, dass ich StringRegExp falsch benutze, aber ich werde ehrlich gesagt aus der Hilfe nicht schlau...

    Ich hoffe ihr könnt mir helfen,
    schon mal vielen Dank im vorraus :)

    Einmal editiert, zuletzt von r!zz3 (22. Juli 2010 um 16:02)

  • ja das ist eigentlich genau das was ich gesucht habe :)

    Was gibt die Funktion denn als Rückgabewert?
    In dem Beispiel das ich gefunden habe, sieht das so aus,
    als wäre der Rückgabewert der gesuchte String?

  • Als Rückgabe bekommst du die Position des Substrings. Also einen Wert >= 1. Wird er nicht gefunden, dann 0.

    "Beispiel"
    [autoit]

    $string = "Hallo Welt, das Leben ist schön"

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

    $result = StringInStr($string, "Hallo")
    MsgBox(0, "", "String gefunden bei Position: " & $result)

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

    $result = StringInStr($string, "Leben")
    MsgBox(0, "", "String gefunden bei Position: " & $result)

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

    $result = StringInStr($string, "bla")
    MsgBox(0, "", "String gefunden bei Position: " & $result)

    [/autoit]
  • Sicher?

    Also ich habe jetzt das ganze StrininStr umgemodelt,
    sieh so aus:

    [autoit]

    $windowtext = WinGetText("SYNCING.NET", "")
    $searchingfor = "You will be informed when the data are downloaded."
    If StringInStr($windowtext,$searchingfor)=$searchingfor Then
    WinWaitActivateClick("SYNCING.NET","Data to receive",50,"Data to receive","[REGEXPCLASS:BUTTON; INSTANCE:2]")

    [/autoit]

    und scheint zu funktionieren...
    Ist das jetzt zufall oder hat das einen Grund?

    trotzdem schon mal Danke für die schnelle hilfe :)

  • ersetze

    [autoit]

    If StringInStr($windowtext,$searchingfor)=$searchingfor Then

    [/autoit]


    durch

    [autoit]

    If StringInStr($windowtext,$searchingfor) Then

    [/autoit]
  • okey, es funktioniert :)

    Vielen Dank

    und wie setze ich diesen Thread jetzt aus "solved"?