Winwaitactiv timeout problem

  • Hallo,


    ich habe das Problem das in einer Function mit WinWaitActiv der timeout ja error 0 ausgeben soll wenn er in diesen läuft.
    nun habe ich danach ein Return eingebaut wenn der timeout greift, aber das Funktioniert nicht weil error immer auf 0 steht...


    selbst wenn ich am anfang der Function seterror auf 1 oder was auch immer stelle geht er in der nächsten zeile gleich wieder auf 0


    Warum ? wie kann ich das Problem lösen ? nehme ich die if @error abfrage raus dann läuft es durch.




    Func close()
    SetError(1)


    ConsoleWrite("Errorcode1 " & @error & @CRLF) <----- error 1


    _au3recordsetup()
    _ffconnect()
    If _ffisconnected() Then
    $url = _fftabgetselected("label")
    $ff = $url & " - Mozilla Firefox"
    EndIf
    WinSetState($ff, "", @SW_MAXIMIZE)
    Send("{HOME}")


    ConsoleWrite("Errorcode2 " & @error & @CRLF) <---- error 0


    WinWaitActive($ff, "", 3)


    ConsoleWrite("Errorcode3 " & @error & @CRLF) <---- error 0


    if @error = 0 then Return


    ConsoleWrite("Errorcode4 " & @error & @CRLF) <---- error 0


    $ff1 = StringLeft($url, 16)
    MouseClick("left", 1173, 289, 1)
    WinWaitActive($ff1 & " - Schließen - Ticket - OTRS ITSM 3.2.9 - Mozilla Firefox", "", 3)
    if @error=0 then Return
    MouseClick("left", 309, 300, 1)
    Send(".")
    MouseClick("left", 321, 472, 1)
    MouseClick("left", 305, 525, 1)
    MouseClick("left", 519, 568, 1)
    EndFunc

  • Hab mein Post nochmal angepasst, weil ich der Meinung bin, dass ich doch nicht ganz verstanden habe, was du genau vor hast.


    Du willst vermutlich in deine Funktion zurückspringen, wenn das Fenster für eine bestimmte Zeit inaktiv war?


    Dann versuch es mal so wie hier, dass du den "Zustand" in einer Variable speicherst und abfragst.


    Hier mal 2 mögliche Varianten um den Fenster-Zustand abzufragen.


    local $Status = WinWaitActive("[CLASS:Notepad]", "", 5)
    Select
    Case $Status = 0
    msgbox(0,"","Editor war 5 Sek inaktiv")
    Case else
    msgbox(0,"", "Editor ist aktiv")
    Endselect



    Do
    local $Status = WinWaitActive("[CLASS:Notepad]", "", 5)
    until $Status = not 0 ; Entfernst du das not, dann geht es nur weiter wenn das Fenster 5 Sek inaktiv ist


    msgbox(0,"","Hier gehts nur weiter wenn das Fenster aktiv ist")

  • Hallo Progger,


    bei WinWaitActive wird nicht @error mit 0 gesetzt, sondern die Function WinWaitActive selbst liefert den Rückgabewert.


    $Rückgabe = WinWaitActive(.....
    If $Rückgabe = 0 Then ...


    Leider halten sich nicht alle Funktionen in autoit an die Konvention dass bei einem Fehler @error <> 0 zurüchgegeben wird.
    Daher empfiehlt es sich für jede Funktion in der Hilfe nachzusehen nach dem Rückgabewert ;)

    MfG Schnuffel


    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid