WinClose

Schließt ein bestimmtes Fenster.

WinClose FensterTitel, FensterText, Wartezeit, 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.

Wartezeit

Typ: Integer oder Float

Wenn weggelassen, wird die Funktion überhaupt nicht warten. Andernfalls geben Sie die maximale Wartezeit in Sekunden an (kann einen Dezimalpunkt enthalten). Schließt sich das Fenster nicht innerhalb dieser Zeit, wird das Skript fortgesetzt.

Fehlerbehandlung

Es wird ein TargetError ausgelöst, wenn das Fenster nicht gefunden werden konnte, es sei denn, der Gruppenmodus wird verwendet.

Es wird keine Ausnahme ausgelöst, wenn ein Fenster gefunden wird, aber nicht geschlossen werden kann. Verwenden Sie daher WinExist oder WinWaitClose, um festzustellen, ob ein Fenster tatsächlich geschlossen ist.

Bemerkungen

Diese Funktion sendet eine Schließmeldung an das Fenster. Das Ergebnis hängt vom Fenster ab (es könnte fragen, ob die Daten gespeichert werden sollen, und so weiter).

Wenn ein übereinstimmendes Fenster aktiv ist, wird dieses Fenster vorrangig vor allen anderen übereinstimmenden Fenstern geschlossen. Bei mehreren übereinstimmenden Fenstern wird in der Regel das oberste (zuletzt verwendete) Fenster geschlossen.

Diese Funktion arbeitet nur mit einem Fenster, es sei denn, FensterTitel ist ahk_group GruppeName (ohne Angabe weiterer Kriterien), dann sind alle Fenster in der Gruppe betroffen.

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

WinClose sendet eine WM_CLOSE-Meldung an das Zielfenster, was eine etwas gewaltsame Methode zum Schließen des Fensters ist. Eine alternative Schließmethode ist das Senden der folgenden Meldung. Beachten Sie jedoch, dass sich das Fenster möglicherweise anders verhält, da der Effekt dem Drücken von Alt+F4 oder dem Klicken auf die Schließen-Schaltfläche in der Titelleiste ähnelt:

PostMessage 0x0112, 0xF060,,, FensterTitel, FensterText  ; 0x0112 = WM_SYSCOMMAND, 0xF060 = SC_CLOSE

Lässt sich ein Fenster nicht mit WinClose schließen, kann die Schließung mit WinKill erzwungen werden.

WinKill, WinWaitClose, ProcessClose, WinActivate, SetTitleMatchMode, DetectHiddenWindows, Zuletzt Gefundenes Fenster, WinExist, WinActive, WinWaitActive, WinWait, GroupActivate

Beispiele

Wenn Notepad existiert, schließe es, andernfalls schließe den Taschenrechner.

if WinExist("Unbenannt - Editor")
    WinClose ; Verwendet das von WinExist gefundene Fenster.
else
    WinClose "Rechner"