WinGet

Ruft die eindeutige ID, Prozess-ID oder den Prozessnamen eines bestimmten Fensters oder eine Liste seiner Steuerelemente ab. Kann auch eine Liste aller Fenster gemäß bestimmter Kriterien abrufen.

WinGet, AusgabeVar , Unterbefehl, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Parameter

AusgabeVar
Name der Ausgabevariable, in der das Ergebnis von Unterbefehl gespeichert werden soll.
Unterbefehl
Wenn leer oder weggelassen, wird standardmäßig ID verwendet (die eindeutige ID eines Fensters abrufen). Andernfalls geben Sie den Unterbefehl an, der ausgeführt werden soll.
FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Wenn jeder dieser Parameter leer ist oder weggelassen wird, wird das Zuletzt Gefundene Fenster verwendet (außer bei den Unterbefehlen Count und List). 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.

Unterbefehle

Geben Sie für Unterbefehl Folgendes an:

ID

Ruft die eindeutige ID eines Fensters ab.

WinGet, AusgabeVar, ID , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Auch bekannt als Fensterhandle (engl. window handle, kurz HWND). Wenn kein Fenster gefunden wurde, wird AusgabeVar leer gemacht. Die Funktionen WinExist() und WinActive() können auch verwendet werden, um die ID eines Fensters zu ermitteln. Zum Beispiel ist WinExist("A") ein schneller Weg, um die ID des aktiven Fensters zu erhalten. Mit ControlGet Hwnd oder MouseGetPos kann die HWND-Nummer eines Steuerelements abgerufen werden, um sie z.B. für Post/SendMessage oder DllCall zu verwenden.

IDLast

Ruft die eindeutige ID des letzten/untersten Fensters bei mehr als einem Fund ab.

WinGet, AusgabeVar, IDLast , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Auch bekannt als Fensterhandle (engl. window handle, kurz HWND). Wenn kein Fenster gefunden wurde, wird AusgabeVar leer gemacht. Wenn nur ein Fenster gefunden wurde, verhält sich dieser Unterbefehl wie der ID- Unterbefehl. Dieses Konzept ähnelt dem von WinActivateBottom.

PID

Ruft die Prozess-ID-Nummer eines Fensters ab.

WinGet, AusgabeVar, PID , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Wenn kein Fenster gefunden wurde, wird AusgabeVar leer gemacht.

ProcessName

Ruft den Namen des Prozesses eines Fensters ab.

WinGet, AusgabeVar, ProcessName , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Zum Beispiel wäre das "notepad.exe". Wenn kein Fenster gefunden wurde, wird AusgabeVar leer gemacht.

ProcessPath [v1.1.01+]

Ruft den kompletten Pfad und Namen des Prozesses eines Fensters ab.

WinGet, AusgabeVar, ProcessPath , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

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

Count

Ruft die Anzahl existierender Fenster gemäß den Titel/Text-Parametern ab.

WinGet, AusgabeVar, Count , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Wenn kein Fenster gefunden wurde, wird AusgabeVar auf 0 gesetzt. Um alle Fenster im System zu zählen, lassen Sie alle vier Titel/Text-Parameter weg. Versteckte Fenster werden nur mitgezählt, wenn DetectHiddenWindows eingeschaltet ist.

List

Ruft die eindeutigen IDs aller existierenden Fenster gemäß den Titel/Text-Parametern ab.

WinGet, AusgabeVar, List , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Um alle Fenster im System abzurufen, lassen Sie alle vier Titel/Text-Parameter weg. Jede ID-Nummer wird in eine Variable gespeichert, deren Name mit dem Namen von AusgabeVar beginnt (um ein Pseudo-Array zu formen). AusgabeVar selbst wird auf die Anzahl der abgerufenen IDs gesetzt (andernfalls 0). Wenn AusgabeVar z.B. MeinArray ist und wurden zwei Fenster gefunden, wird MeinArray1 auf die ID des ersten Fensters, MeinArray2 auf die ID des zweiten Fensters und MeinArray selbst auf 2 gesetzt. Die Fenster werden von oben nach unten abgerufen (entsprechend ihrer Stapelung auf dem Desktop). Versteckte Fenster werden nur mit einbezogen, wenn DetectHiddenWindows eingeschaltet ist. Um ein Pseudo-Array innerhalb einer Funktion global statt lokal zu machen, deklarieren Sie MeinArray als globale Variable, bevor Sie diesen Befehl verwenden (für Assume-Global-Funktionen gilt das Gegenteil). Oft ist es auch notwendig, jede Variable in diesem Satz einzeln zu deklarieren, da ein häufiger Anlass zu Verwirrung vorliegt.

MinMax

Ruft eine Zahl ab, die angibt, ob ein Fenster minimiert oder maximiert ist.

WinGet, AusgabeVar, MinMax , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

AusgabeVar wird leer gemacht, wenn kein Fenster gefunden wurde, andernfalls wird es auf eine der folgenden Zahlen gesetzt:

ControlList

Ruft die Namen aller Steuerelemente in einem Fenster ab.

WinGet, AusgabeVar, ControlList , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Wenn kein Fenster gefunden wurde oder keine Steuerelemente im Fenster vorhanden sind, wird AusgabeVar leer gemacht. Andernfalls wird es auf eine Liste von Steuerelementnamen gesetzt. Jeder Name besteht aus dem Klassennamen des Steuerelements gefolgt von seiner Sequenznummer (ClassNN), wie im internen Tool "Window Spy" angezeigt.

Jeder Steuerelementname außer dem letzten endet mit einem LF-Zeichen (`n). Um die Steuerelementnamen einzeln durchzugehen, verwenden Sie eine parsende Schleife, wie in Beispiel #3 unten gezeigt.

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

ControlListHwnd [v1.0.43.06+]

Ruft die eindeutigen IDs aller Steuerelemente in einem Fenster ab.

WinGet, AusgabeVar, ControlListHwnd , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Wenn kein Fenster gefunden wurde oder keine Steuerelemente im Fenster vorhanden sind, wird AusgabeVar leer gemacht. Andernfalls wird es auf eine Liste von eindeutigen IDs gesetzt. Jede ID ist das Fensterhandle (HWND) des Steuerelements.

Jede ID außer der letzten endet mit einem LF-Zeichen (`n). Um die IDs einzeln durchzugehen, verwenden Sie eine parsende Schleife, wie in Beispiel #3 unten gezeigt.

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

Transparent

Ruft die Transparenzstärke eines Fensters ab.

WinGet, AusgabeVar, Transparent , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Mit WinSet kann ein Fenster transparent gemacht werden. AusgabeVar wird leer gemacht, wenn: 1) das Betriebssystem älter als Windows XP ist; 2) kein Fenster gefunden wurde; 3) das Fenster nicht transparent ist; oder 4) andere Fälle auftreten (bedingt durch das Verhalten des Betriebssystems), z.B. wenn das transparent gemachte Fenster minimiert, wiederhergestellt und/oder größer/kleiner gemacht wurde. Andernfalls wird eine Zahl zwischen 0 und 255 gespeichert, wobei 0 ein durchsichtiges Fenster und 255 ein undurchsichtiges Fenster bedeutet. Zum Beispiel:

MouseGetPos,,, MausFenster
WinGet, Transparenz, Transparent, ahk_id %MausFenster%  ; Transparenz des Fensters unter dem Mauszeiger.

TransColor

Ruft die Farbe ab, die in einem Fenster als transparent markiert ist.

WinGet, AusgabeVar, TransColor , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

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

MouseGetPos,,, MausFenster
WinGet, TransFarbe, TransColor, ahk_id %MausFenster%  ; Transparente Farbe des Fensters unter dem Mauszeiger.

Style

Ruft den Style eines Fensters als 8-stellige Hexadezimalzahl ab.

WinGet, AusgabeVar, Style , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Wenn kein Fenster gefunden wurde, wird AusgabeVar leer gemacht. Das folgende Beispiel prüft, 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.

Weitere Styles finden Sie unter Fenster- und Steuerelement-Styles.

ExStyle

Ruft den erweiterten Style eines Fensters als 8-stellige Hexadezimalzahl ab.

WinGet, AusgabeVar, ExStyle , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Wenn kein Fenster gefunden wurde, wird AusgabeVar leer gemacht. Das folgende Beispiel prüft, 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.

Weitere Styles finden Sie unter Fenster- und Steuerelement-Styles.

Bemerkungen

Die Gültigkeit einer ID-Nummer ist an die Lebensdauer des zugehörigen Fensters gebunden. Mit anderen Worten: Wenn eine Anwendung neu gestartet wird, erhalten all ihre Fenster neue ID-Nummern.

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

Mit MouseGetPos kann die ID des Fensters unter dem Mauszeiger abgerufen werden.

Obwohl die ID-Nummern derzeit vorzeichenlose 32-Bit-Integer sind, können sie in einer zukünftigen Version 64-Bit sein. Daher ist es unsicher, numerische Operationen wie z.B. Additionen mit diesen Werten durchzuführen, da solche Operationen voraussetzen, dass die Eingabezeichenketten als vorzeichenfähige und nicht als vorzeichenlose Integer interpretierbar sind.

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 im System 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 Nr. %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