IfWinExist / IfWinNotExist


Überprüft, ob das angegebene Fenster existiert.

IfWinExist [, WinTitle, WinText, ExcludeTitle, ExcludeText]
IfWinNotExist [, WinTitle, WinText, ExcludeTitle, ExcludeText]
UniqueID := WinExist("WinTitle", "WinText", "ExcludeTitle", "ExcludeText")

Parameter

WinTitle Der Titel (oder ein Teil davon) des Ziel-Fensters (die Bedingungen für eine Übereinstimmung werden von SetTitleMatchMode bestimmt). Falls dieser und die restlichen 3 Parameter fehlen, wird das Zuletzt gefundene Fenster benutzt (es wird geprüft, ob das angegebene Fenster noch existiert). Um eine Fenster-Klasse zu verwenden, geben Sie ahk_class ExactClassName (wie es der Window Spy anzeigt) an. Um einen Prozeßbezeichner (process identifier (PID)) zu verwenden, geben Sie ahk_pid %VarMitPID% an. Für eine Fenster-Gruppe geben Sie ahk_group GroupName an. Um die ID-Nummer eines Fensters zu verwenden, geben Sie ahk_id %VarContainingID% an. Die Suche läßt sich durch Angabe mehrerer Kriterien eingrenzen. Beispiel: MeineDatei.txt ahk_class Notepad
WinText Wenn vorhanden, muß dieser Parameter ein Teilstring eines einzelnen Textelements vom Zielfenster sein (so, wie es vom Window Spy entdeckt wurde). Mit DetectHiddenText On werden auch versteckte Textelemente erkannt.
ExcludeTitle Fenster, deren Titel diesen Wert enthalten, werden nicht betrachtet.
Achtung: Wegen der Rückwärtskompatibilität zu .aut-Scripts wird dieser Parameter als Befehl interpretiert, wenn sein Name einem Befehl entspricht. Um dies zu umgehen, verwenden Sie stattdessen die WinExist()-Funktion.
ExcludeText Fenster, deren Text diesen Wert enthält, werden nicht betrachtet.

Bemerkungen

Falls kein Parameter angegeben ist, wird geprüft, ob das Zuletzt gefundene Fenster noch existiert (bzw. nicht existiert bei IfWinNotExist).

Wenn bei einem dieser Befehle das gesuchte Fenster existiert, wird es zum Zuletzt gefundenen Fenster; sprich, wenn das Ergebnis von IfWinExist "wahr" oder IfWinNotExist "falsch" ist, wird das Zuletzt gefundene Fenster aktualisiert.

Die Funktion WinExist() liefert die ID (HWND) des ersten passenden Fensters zurück. Wenn nicht, gibt sie 0 zurück. Während alle Zahlen ungleich Null als "wahr" gelten, ist if WinExist("WinTitle") immer "wahr", wenn WinTitle existiert.

Um das HWND eines Steuerelements zu entdecken, (das braucht man z. B. für Post/SendMessage oder DllCall), verwenden Sie ControlGet Hwnd oder MouseGetPos.

SetWinDelay gilt nicht für IfWinExist/IfWinNotExist.

Bei Fenster-Titeln und -Texten wird nach Groß-/Kleinschreibung unterschieden. Versteckte Fenster werden nur entdeckt, wenn DetectHiddenWindows On ist.

Siehe auch

IfWinActive, SetTitleMatchMode, DetectHiddenWindows, Last Found Fenster, Process, WinActivate, WinWaitActive, WinWait, WinWaitClose, #IfWinActive/Exist

Beispiele

IfWinExist, Unbenannt - Editor
{
    WinActivate  ; Hier wird automatisch das oben gefundene Fenster verwendet.
    WinMaximize  ; Hier ebenfalls.
    Send, A bissi Text.{Enter}
    return
}

IfWinNotExist, Calculator
    return
else
{
    WinActivate  ; Das obige "IfWinNotExist" setzt das "Zuletzt gefundene" Fenster für uns.
    WinMove, 40, 40  ; An eine andere Position verschieben.
    return
}

if WinExist("ahk_class Notepad") or WinExist("ahk_class" . ClassName)
    WinActivate  ; Verwendet das Zuletzt gefundene Fenster.

MsgBox % "Die ID des aktiven Fensters ist " . WinExist("A")