WinClose

Schließt ein bestimmtes Fenster.

WinClose , FensterTitel, FensterText, Wartezeit, AusnahmeTitel, AusnahmeText

Parameter

FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

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 muss ein Fenstertitel mit dem angegebenen FensterTitel oder AusnahmeTitel beginnen, um eine Übereinstimmung zu sein, was mit SetTitleMatchMode geändert werden kann.

Wartezeit

Wenn leer oder weggelassen, wird der Befehl überhaupt nicht warten. Wenn 0, gilt eine Wartezeit von 500 ms. Andernfalls geben Sie die maximale Wartezeit in Sekunden an (kann einen Dezimalpunkt enthalten oder ein Ausdruck sein). Schließt sich das Fenster nicht innerhalb dieser Zeit, wird das Skript fortgesetzt.

Bemerkungen

Dieser Befehl 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.

Dieser Befehl 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.

ErrorLevel wird von diesem Befehl nicht gesetzt. Verwenden Sie daher WinExist(), IfWinExist oder WinWaitClose, um festzustellen, ob ein Fenster tatsächlich geschlossen ist.

Während der Befehl 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, Process, 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