WinWaitClose

Wartet, bis keine passenden Fenster mehr gefunden werden.

WinWaitClose FensterTitel, FensterText, Zeitlimit, AusnahmeTitel, AusnahmeText

Parameter

FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Typ: Zeichenkette, Integer oder Objekt

Wenn jeder dieser Parameter leer ist oder weggelassen wird, wird das Zuletzt Gefundene Fenster verwendet. Andernfalls geben Sie für FensterTitel einen Fenstertitel oder andere Kriterien zur Identifizierung des Zielfensters und/oder für FensterText eine Teilzeichenkette aus einem Textelement des Zielfensters an (Textelemente können mit dem internen Tool "Window Spy" in Erfahrung gebracht werden).

AusnahmeTitel und AusnahmeText können verwendet werden, um ein oder mehrere Fenster anhand ihres Titels oder Textes auszuschließen. Ihre Angabe ähnelt der von FensterTitel und FensterText, außer dass AusnahmeTitel keine anderen Kriterien als den Fenstertitel erkennt.

Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Standardmäßig werden versteckte Fenster nicht erkannt und versteckte Textelemente erkannt, was mit DetectHiddenWindows und DetectHiddenText geändert werden kann. Standardmäßig kann ein Fenstertitel den angegebenen FensterTitel oder AusnahmeTitel an beliebiger Stelle enthalten, um eine Übereinstimmung zu sein, was mit SetTitleMatchMode geändert werden kann.

Zeitlimit

Typ: Integer oder Float

Wenn weggelassen, wird die Funktion unendlich lang warten. Andernfalls geben Sie die maximale Wartezeit in Sekunden an. Um auf einen Bruchteil einer Sekunde zu warten, geben Sie eine Floating-Point-Zahl an, z.B. 0.25, um maximal 250 Millisekunden zu warten.

Rückgabewert

Typ: Integer (boolesch)

Diese Funktion gibt 0 (false) zurück, wenn die Funktion das Zeitlimit überschritten hat, andernfalls 1 (true).

Bemerkungen

Die Funktion hört bereits auf zu warten, wenn keine passenden Fenster gefunden werden, und nicht erst, wenn Zeitlimit abgelaufen ist. In diesem Fall wird sofort 1 zurückgegeben und die Skriptausführung fortgesetzt. Umgekehrt kann die Funktion nach der Schließung eines passenden Fensters weiter warten, bis keine passenden Fenster mehr gefunden werden.

Da "A" mit dem jeweils aktiven Fenster übereinstimmt, wartet WinWaitClose "A" normalerweise unendlich lang. Um stattdessen auf die Schließung des aktuell aktiven Fensters zu warten, geben Sie wie folgt dessen Titel oder eindeutige ID an:

WinWaitClose WinExist("A")

WinWaitClose aktualisiert das Zuletzt Gefundene Fenster, wenn es ein passendes Fenster findet. Dies kann z.B. verwendet werden, um das Fenster zu identifizieren oder damit zu arbeiten, nachdem die Funktion das Zeitlimit überschritten hat. Zum Beispiel:

Gui("", "Testfenster " Random()).Show("w300 h50")  ; Testfenster anzeigen.
if !WinWaitClose("Test",, 5)  ; Innerhalb von 5 Sekunden schließen.
{
    MsgBox "Fenster noch nicht geschlossen: " WinGetTitle()
    WinClose  ; Das von WinWaitClose gefundene Fenster schließen.
}

Während die Funktion wartet, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.

Wenn ein anderer Thread den Inhalt der Variablen ändert, die für die Parameter dieser Funktion verwendet wurden, sieht die Funktion die Änderung nicht, d.h. die Funktion verwendet weiterhin den Titel und Text, die ursprünglich in den Variablen vorhanden waren, als die Funktion zu warten begann.

DetectHiddenWindows hat auch Einfluss darauf, ob versteckte Fenster, die durch eine HWND-Nummer identifiziert werden, erkannt werden, aber nur, wenn es zusammen mit WinWait oder WinWaitClose verwendet wird.

WinClose, WinWait, WinWaitActive, WinExist, WinActive, ProcessWaitClose, SetTitleMatchMode, DetectHiddenWindows

Beispiele

Öffnet Notepad, wartet bis es existiert und wartet dann auf seine Schließung.

Run "notepad.exe"
WinWait "Unbenannt - Editor"
WinWaitClose ; Verwendet das von WinWait gefundene Fenster.
MsgBox "Notepad wurde geschlossen."