Prüfen, ob ein Fenster offen ist, ohne goto

  • Hallo Freunde der automatisierten Schritte,

    In Autoit gibt es keinen Rücksprung (goto) – wie löst man dann folgendes Problem?

    Solange das Fenster „speichern unter“ offen ist, soll es aktiviert und mit der Escape-Taste geschlossen werden.

    Soweit zur Theorie:

    Manchmal funktioniert es, manchmal nicht – daher wollte ich eine extra Fensterprüfung einbauen und die sollte so lange durchlaufen werden, bis das Fenster wirklich geschlossen ist.


    So funktioniert es nicht:

    PS: Woran kann es liegen, dass über das Script das Fenster per ESC zum Teil geschlossen wird und teilweise nicht? Per Tastatur funktioniert ESC immer.

    Viele Grüße
    AutoMit

    Einmal editiert, zuletzt von AutoMit (8. Oktober 2015 um 13:15)

  • Das war ein freudscher Fehlgriff - ich meinte natürlich Goto (habe es oben edit - sorry).

    Ich hätte obiges so gelöst, wenn das Fenster offen ist, beende es.

    Nur - wenn es jetzt immer noch offen ist, wie prüfe ich dann erneut darauf, ob das Fenster offen ist, ohne den Code erneut schreiben zu müssen?

    Mit Goto würde ich einfach über die Zeile mit Goto springen:
    If WinActivate ($Fenster_aktuell) Then
    und den Block erneut abarbeiten lassen, bis das Fenster wirklich geschlossen ist.

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

  • Vielen Dank Bioshade. Das ist eine gute Lösung. Habe viele Jahre mit goto Konstruktionen gearbeitet, und da ist der Umstieg auf While-Schleifen nicht einfach.
    PS: Mag noch sagen, wo allgemein die do ... until Konstruktion ihre Vorteile gegenüber while ... wend hat?

  • Do-Until Schleifen garantieren mindensten einen Durchlauf.
    While-WEnd wird dagegen nur durchlaufen, wenn die Bedingung von Anfang an wahr ist.