Schleife bis Fenster vorhanden ist

  • Wie baue ich eine Schleife die abfragt ob ein Fenster exsistiert
    wenn nicht zum anfang der schleife springt
    wenn ja dann die Daten einträgt

    Die Func Funktion verstehe ich irgendwie nicht
    und Goto gibt es nicht
    WinWait funktioniert irgendwie nicht sauber oder ich verstehe nicht warum WinWait nicht auf das Fenster wartet

    [autoit]


    if WinExists ("Fred Login","") Then

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

    Local $hWnd = WinGetHandle("Fred Login","")

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

    If Not WinActive ($hWnd,"") Then WinActivate ($hWnd,"")
    WinWait ($hWnd,"",10)

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

    ControlSend ($hWnd,"","",$A1,1)
    ControlSend ($hWnd,"","","{TAB}{ENTER}",0)

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

    else

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

    EndIf

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

    Danke vorab für die Hilfe

  • Das ist keine Schleife sondern nur eine einzelne Abfrage...

    Schau dir mal While an ;D

    Edit: Und das WinWait in der zweiten Abfrage würde ich zu nem WinWaitActive ändern...

    Einmal editiert, zuletzt von Gandalf (27. Oktober 2015 um 11:42)

  • WinWait wartet auf ein Fenster. WinActive fragt ab, ob ein Fenster aktiv ist. WinActivate aktiviert ein Fenster.

    Oder anders formuliert:

    Die Prüfung, ob dein Fenster überhaupt existiert, findet erst nach dem Aktivieren des möglicherweise nicht existenten Fensters statt.. und warten tut die Funktion WinWait auch nicht lange, da der Timeout mit 10 Sekunden recht kurz angelegt ist... spielt aber auch kaum eine Rolle: Denn du fragst das möglicherweise nicht existierende Fenster vorher bereits ab, und speicherst das möglicherweise leere Handle ab und wartest auf dieses.

    Oder anders formuliert: Du kannst oben - statt WinExists - WinWait mit der gleichen Syntax verwenden, und unten, wo du derzeit "WinWait" hast, solltest du eher - wie Gandalf bereits schrieb - WinWaitActive verwenden. Denn das wartet, bis das angegebene Fenster das Aktive Fenster ist.

    Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Ich falle in die Friteuse.

  • Leider habe ich mit dem WinWait nicht den Erfolg wie mit der While schleife.

    Derzeit habe ich die besten Ergebnisse mit diesem Code.

    Wobei es mir alles noch nicht richtig gefällt
    Schöner wäre es wenn ich das ganze im Hintergrund laufen lassen könnte ohne das das Fenster aktiv sein muß. Aber vermutlich werde ich das wegen dem Java nicht hin bekommen

    [autoit]


    While Not WinExists ("Anmeldung","")
    WEnd

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

    Local $hWnd = WinGetHandle("[Class:IEFrame]","")
    If Not WinActive ($hWnd,"") Then WinActivate ($hWnd,"")
    WinWaitActive ($hWnd,"",10)

    [/autoit]