Mehrere Ereignisse überwachen

  • Hallo,

    ich bin neue AutoIt Nutzer und auch kein routinierter Programmierer und schlage mich aktuell mit folgendem Problem herum. Starte ich mein AutoIt-Script, soll geprüft werden, ob ein bestimmter Prozess läuft. Ist der Prozess gestartet, soll einerseits weiter überwacht werden, ob der Prozess läuft und parallel dazu, ob ein bestimmtes Fenster geöffnet wird. Sollte der Prozess beendet werden ODER das entsprechende Fenster geöffnet werden, soll eine MsgBox mit einem Hinweis geöffnet werden und das Script beendet. Mein Ansatz war:

    [autoit]


    while prozessExsists(test.exe)<>0
    if WinExists ("Fenstertitel")=1 then
    msgbox (0,"Hinweis","Fenster geöffnet")
    exit
    endif
    wend
    msgbox (0,"Hinweis","Prozess beendet")

    [/autoit]

    Leider wird nur auf das Verlassen der Schleife durch Prozessabbruch reagiert, erscheint das Fenster passiert nichts. Hab ich nen Denkfehler?

    Danke für eure Unterstützung,
    Santman

  • Also ich hab dein Script mit dem Windows Taschenrechner und Notepad getestet. Bei mir funktioniert es.
    Vll. falscher Fenstertitel?

    [autoit]


    While ProcessExists("calc.exe") <> 0 ; Du hattest hier kein String übergeben.
    if WinExists ("Unbenannt - Editor") = 1 then
    Msgbox (0,"Hinweis","Fenster geöffnet")
    exit
    EndIf
    WEnd
    Msgbox (0,"Hinweis","Prozess beendet")

    [/autoit]

    ~IRC: irc.afterworkchat.de #autoit

  • Generell kann man das Skript hier verkürzen.
    Eine While-Schleife läuft solange, wie die Bedingung wahr ist.
    In AutoIt ist alles, was nicht 0 ist, wahr. Da ProcessExists bei Erfolg die PID zurückgibt, welche immer eine positive Ganzzahl ist, ist die Überprüfung mit <> 0 nicht notwendig.

    Genau dasselbe bei dem If in Zeile 2: Wenn die Bedingung wahr ist, wird der Then-Block ausgeführt. Da WinExists bei einem existierenden Fenster 1 zurückgibt, was wiederum von AutoIt als wahr verarbeitet wird, ist auch hier das "= 1" nicht nötig. ^^

    [autoit]


    While ProcessExists("calc.exe")
    If WinExists("Unbenannt - Editor") Then
    Msgbox(0, "Hinweis", "Fenster geöffnet")
    Exit
    EndIf
    WEnd
    Msgbox(0, "Hinweis", "Prozess beendet")

    [/autoit]

    lg

  • Vielen Dank für eure Antworten. Es war tatsächlich der Fenstertitel :wacko: .

    Aber ich hab auf jeden Fall was gelernt.