WinGet

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

WinGet, AusgabeVar , Unterbefehl, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Parameter

AusgabeVar
Name der Variable, in der das Ergebnis von Unterbefehl gespeichert werden soll.
Unterbefehl
Die durchzuführende Operation. Fehlt dieser Parameter oder ist er leer, gilt standardmäßig der ID-Unterbefehl. Siehe Unterbefehle.
Fenstertitel
Der Titel oder andere Möglichkeiten zum Identifizieren des Zielfensters. Weitere Informationen finden Sie auf der Seite Fenstertitel-Parameter & Zuletzt Gefundenes Fenster.
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.
Titelausnahme
Ignoriert Fenster, deren Titel diesen Wert enthalten.
Textausnahme
Ignoriert Fenster, deren Textelemente diesen Wert enthalten.

Unterbefehle

Geben Sie für Unterbefehl Folgendes an:

ID

Ermittelt die eindeutige ID-Nummer eines Fensters.

WinGet, AusgabeVar, ID , Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Auch bekannt als Window Handle (HWND). Werden keine passenden Fenster gefunden, 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 das HWND eines Steuerelements zu ermitteln (z. B. für Post/SendMessage oder DllCall), nutzt man ControlGet Hwnd oder MouseGetPos.

IDLast

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

WinGet, AusgabeVar, IDLast , Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Auch bekannt als Window Handle (HWND). 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, Titelausnahme, Textausnahme

ProcessName

Ermittelt den Namen des Prozesses, der ein Fenster besitzt.

WinGet, AusgabeVar, ProcessName , Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

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, Titelausnahme, Textausnahme

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, Titelausnahme, Textausnahme

Wenn keine passenden Fenster gefunden werden, wird AusgabeVar auf 0 gesetzt. Um die Anzahl aller Fenster im Betriebssystem zu ermitteln, lässt man alle vier Titel-/Text-Parameter weg. 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, Titelausnahme, Textausnahme

Um alle Fenster des gesamten Systems abzurufen, lässt man alle vier Titel-/Text-Parameter weg. Jede ID-Nummer wird in eine Variable gespeichert, deren Name mit AusgabeVar's eigenem Namen 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 einen Pseudo-Array innerhalb einer Funktion erstellen zu können, das nicht lokal sondern global ist, muss MeinArray als globale Variable deklariert werden, bevor dieser Befehl verwendet wird (das Gegenteil davon gilt für Assume-Global-Funktionen). Oft ist es auch notwendig, jede Variable dieses Pseudo-Arrays einzeln zu deklarieren, was ein häufiger Anlass zu Verwirrung ist.

MinMax

Ermittelt den minimierten/maximierten Zustand eines Fensters.

WinGet, AusgabeVar, MinMax , Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

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, Titelausnahme, Textausnahme

Falls keine passenden Fenster gefunden werden oder keine Steuerelemente im Fenster vorhanden sind, wird AusgabeVar leer gemacht. Ansonsten besteht jeder Name des Steuerelements aus dessen Klassenname und Sequenznummer (ClassNN), 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.

ControlListHwnd [v1.0.43.06+]

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

WinGet, AusgabeVar, ControlListHwnd , Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

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

Transparent

Ermittelt die Transparenzstärke eines Fensters.

WinGet, AusgabeVar, Transparent , Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

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, Titelausnahme, Textausnahme

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, Titelausnahme, Textausnahme

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, Titelausnahme, Textausnahme

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 ist nur gültig, während es existiert. Wenn man also eine Anwendung neustarten würde, bekämen all ihre Fenster neue ID-Nummern.

Alle ID-Nummern, die von diesem Befehl abgerufen werden, sind numerisch (ohne den 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 unterscheiden zwischen Groß- und Kleinschreibung. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.

Siehe auch

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

Beispiele

Beispiel #1

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%".

Beispiel #2

Besucht alle Fenster des gesamten Systems und zeigt Informationen zu jedem Fenster 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
}

Beispiel #3

Extrahiert die einzelnen Steuerelementnamen aus der Steuerelementliste des aktiven Fensters:

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

Beispiel #4

Zeigt in Echtzeit die Steuerelementliste des aktiven Fensters an:

#Persistent
SetTimer, AktivesFensterBeobachten, 200
return

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