WinGet

Ermittelt die eindeutige ID, Prozess-ID oder den Prozessnamen eines bestimmten Fensters, oder eine Liste aller darin enthaltenen Steuerelemente. Zudem kann dieser Befehl eine Liste aller Fenster abrufen, die bestimmte Kriterien erfüllen.

WinGet, AusgabeVar , Unterbefehl, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Parameter

AusgabeVar
Name der Ausgabevariable, in der das Ergebnis von Unterbefehl gespeichert werden soll.
Unterbefehl
Die Operation, die durchgeführt werden soll. Wenn dieser Parameter leer ist, wird standardmäßig der ID-Unterbefehl verwendet. Siehe Unterbefehle.
FensterTitel
Der Titel oder andere Möglichkeiten zum Identifizieren des Zielfensters. Weitere Informationen finden Sie unter FensterTitel-Parameter.
FensterText
Eine Zeichenkette, die in einem der Textelemente des Zielfensters enthalten ist (eventuell vorhandene Textelemente können mit dem internen Tool Window Spy aufgedeckt werden). Versteckte Textelemente werden nur erkannt, wenn DetectHiddenText eingeschaltet ist.
IgnoriereTitel
Alle Fenster, die diesen Wert in ihren Titeln enthalten, werden ignoriert.
IgnoriereText
Alle Fenster, die diesen Wert in ihren Textelementen enthalten, werden ignoriert.

Unterbefehle

Geben Sie für Unterbefehl Folgendes an:

ID

Ermittelt die eindeutige ID-Nummer eines Fensters.

WinGet, AusgabeVar, ID , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Auch bekannt als Window Handle (HWND). Wenn keine passenden Fenster gefunden werden, wird AusgabeVar leer gemacht. Die Funktionen WinExist() und WinActive() können auch verwendet werden, um die ID eines Fensters zu ermitteln; zum Beispiel wäre WinExist("A") ein schneller Weg, die ID des aktiven Fensters abzurufen. Um die HWND-Nummer eines Steuerelements abzurufen (z. B. für Post/SendMessage oder DllCall), können Sie ControlGet Hwnd oder MouseGetPos nutzen.

IDLast

Ermittelt die eindeutige ID-Nummer des letzten/untersten Fensters, wenn mehr als ein Fenster gefunden wird.

WinGet, AusgabeVar, IDLast , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Auch bekannt als Window Handle (HWND). Wenn keine passenden Fenster gefunden werden, wird AusgabeVar leer gemacht. Wenn nur eine Übereinstimmung vorhanden ist, verhält sich dieser Unterbefehl wie der ID- Unterbefehl. Dieses Konzept ist vergleichbar mit dem, das von WinActivateBottom verwendet wird.

PID

Ermittelt die Prozess-ID-Nummer eines Fensters.

WinGet, AusgabeVar, PID , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Wenn keine passenden Fenster gefunden werden, wird AusgabeVar leer gemacht.

ProcessName

Ermittelt den Namen des Prozesses, der ein Fenster besitzt.

WinGet, AusgabeVar, ProcessName , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Zum Beispiel wäre das "notepad.exe". Wenn keine passenden Fenster gefunden werden, wird AusgabeVar leer gemacht.

ProcessPath [v1.1.01+]

Ermittelt den vollständigen Pfad und Namen des Prozesses, der ein Fenster besitzt.

WinGet, AusgabeVar, ProcessPath , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Zum Beispiel wäre das "C:\Windows\System32\notepad.exe". Wenn keine passenden Fenster gefunden werden, wird AusgabeVar leer gemacht.

Count

Ermittelt die Anzahl vorhandener Fenster, die mit den Titel/Text-Parametern übereinstimmen.

WinGet, AusgabeVar, Count , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Wenn keine passenden Fenster gefunden werden, wird AusgabeVar auf 0 gesetzt. Um die Anzahl aller Fenster im Betriebssystem zu ermitteln, müssen Sie alle vier Titel-/Text-Parameter weglassen. Versteckte Fenster werden nur mitgezählt, wenn DetectHiddenWindows eingeschaltet ist.

List

Ermittelt die eindeutigen ID-Nummern aller vorhandenen Fenster, die mit den Titel/Text-Parametern übereinstimmen.

WinGet, AusgabeVar, List , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Um alle Fenster des gesamten Systems abzurufen, müssen Sie alle vier Titel-/Text-Parameter weglassen. Jede ID-Nummer wird in eine Variable gespeichert, deren Name mit dem Eigennamen von AusgabeVar beginnt (um einen Pseudo-Array zu formen). AusgabeVar selbst wird auf die Anzahl der abgerufenen Elemente gesetzt (0, wenn keine gefunden werden). Wenn AusgabeVar beispielsweise MeinArray wäre und gäbe es zwei übereinstimmende Fenster, würde MeinArray1 auf die ID des ersten Fensters, MeinArray2 auf die ID des zweiten Fensters und MeinArray selbst auf 2 gesetzt werden. Die Fenster werden von oben nach unten abgerufen (entsprechend der Tatsache, wie sie auf dem Desktop gestapelt sind). Versteckte Fenster werden nur mitgezählt, wenn DetectHiddenWindows eingeschaltet ist. Um innerhalb einer Funktion ein Pseudo-Array global statt lokal zu machen, deklarieren Sie MeinArray als globale Variable, bevor Sie diesen Befehl verwenden (das Gegenteil davon gilt für Assume-Global-Funktionen). Oft ist es auch notwendig, jede Variable in diesem Satz einzeln zu deklarieren, da ein häufiger Anlass zu Verwirrung vorliegt.

MinMax

Ermittelt den minimierten/maximierten Zustand eines Fensters.

WinGet, AusgabeVar, MinMax , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

AusgabeVar wird leer gemacht, wenn keine passenden Fenster gefunden werden, ansonsten ist eine der folgenden Zahlen enthalten:

ControlList

Ermittelt die Namen aller Steuerelemente in einem Fenster.

WinGet, AusgabeVar, ControlList , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Falls keine passenden Fenster gefunden werden oder keine Steuerelemente im Fenster vorhanden sind, wird AusgabeVar leer gemacht. Ansonsten wird eine Liste zurückgegeben, die die ClassNN-Bezeichnung von jedem Steuerelement enthält (ClassNN ist der Klassenname des Steuerelements, gefolgt der Reihenfolgenummer innerhalb des übergeordneten Fensters, wie im internen Tool Window Spy angezeigt).

Jedes Element, außer das letzte, endet mit einem LF-Zeichen (`n). Beispiel #3 im letzten Abschnitt zeigt, wie eine parsende Schleife genutzt werden kann, um die Steuerelementnamen einzeln durchzugehen.

Steuerelemente werden nach ihrer Z-Reihenfolge sortiert, was üblicherweise der Navigation via Tab entspricht, sofern vom Fenster unterstützt.

ControlListHwnd [v1.0.43.06+]

Ermittelt die eindeutigen ID-Nummern aller Steuerelemente in einem Fenster.

WinGet, AusgabeVar, ControlListHwnd , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Falls keine passenden Fenster gefunden werden oder keine Steuerelemente im Fenster vorhanden sind, wird AusgabeVar leer gemacht. Ansonsten ist jede eindeutige ID die HWND-Nummer des Steuerelements. Jedes Element, außer das letzte, endet mit einem LF-Zeichen (`n).

Steuerelemente werden nach ihrer Z-Reihenfolge sortiert, was üblicherweise der Navigation via Tab entspricht, sofern vom Fenster unterstützt.

Transparent

Ermittelt die Transparenzstärke eines Fensters.

WinGet, AusgabeVar, Transparent , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Mit WinSet kann ein Fenster transparent gemacht werden. AusgabeVar wird leer gemacht, wenn: 1) das Betriebssystem älter als Windows XP ist; 2) keine passenden Fenster gefunden werden; 3) das Fenster nicht transparent ist; oder 4) andere Bedingungen auftreten (durch das Verhalten des Betriebssystems), z. B. wenn das transparent gemachte Fenster minimiert, wiederhergestellt und/oder skaliert wurde. Ansonsten wird eine Zahl zwischen 0 und 255 gespeichert - 0 wäre ein durchsichtiges Fenster und 255 ein undurchsichtiges Fenster. Zum Beispiel:

MouseGetPos,,, MausFenster
WinGet, Transparenz, Transparent, ahk_id %MausFenster%  ; Transparenz eines Fensters unterhalb des Mauszeigers.

TransColor

Ermittelt die Farbe, die in einem Fenster als transparent markiert ist.

WinGet, AusgabeVar, TransColor , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Mit WinSet kann eine Farbe als transparent markiert werden. AusgabeVar wird leer gemacht, wenn: 1) das Betriebssystem älter als Windows XP ist; 2) keine passenden Fenster gefunden werden; 3) das Fenster keine transparente Farbe hat; oder 4) andere Bedingungen auftreten (durch das Verhalten des Betriebssystems), z. B. wenn das transparent gemachte Fenster minimiert, wiederhergestellt und/oder skaliert wurde. Ansonsten wird eine 6-stellige hexadezimale RGB-Farbe gespeichert (z. B. 0x00CC99). Zum Beispiel:

MouseGetPos,,, MausFenster
WinGet, TransFarbe, TransColor, ahk_id %MausFenster%  ; Transparente Farbe eines Fensters unterhalb des Mauszeigers.

Style

Ermittelt eine 8-stellige Hexadezimalzahl, die den Style eines Fensters repräsentiert.

WinGet, AusgabeVar, Style , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Wenn keine passenden Fenster gefunden werden, wird AusgabeVar leer gemacht. Das folgende Beispiel stellt fest, ob ein Fenster den WS_DISABLED-Style hat:

WinGet, Style, Style, Mein Fenstertitel
if (Style & 0x8000000)  ; 0x8000000 ist WS_DISABLED.
  MsgBox Das Fenster ist deaktiviert.

Die Style-Tabelle beinhaltet eine Auflistung einiger Styles.

ExStyle

Ermittelt eine 8-stellige Hexadezimalzahl, die den erweiterten Style eines Fensters repräsentiert.

WinGet, AusgabeVar, ExStyle , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Wenn keine passenden Fenster gefunden werden, wird AusgabeVar leer gemacht. Das folgende Beispiel stellt fest, ob ein Fenster den WS_EX_TOPMOST-Style hat (immer im Vordergrund):

WinGet, ExStyle, ExStyle, Mein Fenstertitel
if (ExStyle & 0x8)  ; 0x8 ist WS_EX_TOPMOST.
   MsgBox Das Fenster ist immer im Vordergrund.

Die Style-Tabelle beinhaltet eine Auflistung einiger Styles.

Bemerkungen

Die ID-Nummer eines Fensters bleibt nur zu dessen Lebzeiten gültig. Mit anderen Worten: Wenn man eine Anwendung neu starten würde, bekämen all ihre Fenster neue ID-Nummern.

Alle ID-Nummern, die von diesem Befehl abgerufen werden, sind numerisch (ohne das Präfix "ahk_id") und werden im hexadezimalen Format gespeichert, egal welche SetFormat-Einstellung gerade aktiv ist.

Die ID des Fensters, das sich unter dem Mauszeiger befindet, kann mit MouseGetPos abgerufen werden.

Zwar sind die ID-Nummern zurzeit vorzeichenlose 32-Bit-Integer, allerdings könnten sie in einer zukünftigen Version zu 64-Bit-Integer werden. Demzufolge sollte man numerische Operationen wie Addition bei solchen Werten vermeiden, weil solche Operationen ihre eingehenden Zeichenketten als vorzeichenfähige statt vorzeichenlose Integer voraussetzen.

Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.

WinGetClass, Process, WinGetTitle, MouseGetPos, ControlGet, ControlFocus, GroupAdd

Beispiele

Maximiert das aktive Fenster und meldet dessen eindeutige ID.

WinGet, AktiveID, ID, A
WinMaximize, ahk_id %AktivID%
MsgBox, Die ID des aktiven Fensters ist "%AktiveID%".

Besucht alle Fenster des gesamten Systems und zeigt Informationen zu jedem an.

WinGet, id, List,,, Program Manager
Loop, %id%
{
    diese_ID := id%A_Index%
    WinActivate, ahk_id %diese_ID%
    WinGetClass, diese_Klasse, ahk_id %diese_ID%
    WinGetTitle, dieser_Titel, ahk_id %diese_ID%
    MsgBox, 4, , Gehe alle Fenster durch`n%A_Index% von %id%`nahk_id %diese_ID%`nahk_class %diese_Klasse%`n%dieser_Titel%`n`nWeiter?
    IfMsgBox, NO, break
}

Extrahiert die einzelnen Steuerelementnamen aus der Steuerelementliste des aktiven Fensters.

WinGet, StrlmntListe, ControlList, A
Loop, Parse, StrlmntListe, `n
{
    MsgBox, 4,, Steuerelement #%A_Index% ist "%A_LoopField%". Weiter?
    IfMsgBox, No
        break
}

Zeigt in Echtzeit die Steuerelementliste des aktiven Fensters an.

#Persistent
SetTimer, AktivesFensterBeobachten, 200
return

AktivesFensterBeobachten:
WinGet, StrlmntListe, ControlList, A
ToolTip, %StrlmntListe%
return