ControlGet

Ruft verschiedene Arten von Informationen über ein Steuerelement ab.

ControlGet, AusgabeVar, Unterbefehl , Wert, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Parameter

AusgabeVar
Name der Variable, in der das Ergebnis von Unterbefehl gespeichert werden soll.
Unterbefehl, Wert
Diese Parameter sind voneinander abhängig und können wie unten gezeigt genutzt werden.
Steuerelement

Kann entweder das ClassNN (Klassenname und Instanznummer des Steuerelements) oder der Text des Steuerelements sein, die beide mit dem internen Tool Window Spy ermittelt werden können. Verwendet man Text, ist das Übereinstimmungsverhalten abhängig von SetTitleMatchMode. Wenn dieser Parameter leer ist, wird das oberste Steuerelement des Fensters benutzt.

Um ein Steuerelement via HWND (Windows Handle) anzusteuern, lässt man den Steuerelement-Parameter leer und übergibt ahk_id %SteuerelementHwnd% als Fenstertitel-Parameter (funktioniert auch bei versteckten Steuerelementen, selbst wenn DetectHiddenWindows ausgeschaltet ist). Das HWND eines Steuerelements wird üblicherweise per ControlGet Hwnd, MouseGetPos oder DllCall abgerufen.

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:

List

Ermittelt eine Liste von Elementen aus einer ListView, ListBox, ComboBox oder DropDownList. Für ListView können zusätzliche Optionen angegeben werden.

ControlGet, AusgabeVar, List , Optionen, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

ListView

Wenn der Optionen-Parameter fehlt oder leer ist, wird der gesamte Text im Steuerelement abgerufen. Alle Reihen, außer die letzte, enden mit einem Zeilenumbruchszeichen (`n). Innerhalb jeder Reihe enden alle Felder (Spalten), außer das letzte, mit einem Tabulatorzeichen (`t).

Folgende Wörter können in Optionen eingefügt werden, die mit Leer- oder Tabulatorzeichen voneinander getrennt werden müssen:

Selected Ruft nur die markierten (hervorgehobenen) Reihen statt alle Reihen ab. Sind keine vorhanden, wird AusgabeVar leer gemacht.
Focused Ruft nur die fokussierte Reihe ab. Sind keine vorhanden, wird AusgabeVar leer gemacht.
Col4 Ruft nur die vierte Spalte (Feld) statt alle Spalten ab (ersetzen Sie die 4 durch eine beliebige Zahl).
Count Ruft eine einzelne Zahl ab, die die Gesamtanzahl der Reihen im Steuerelement repräsentiert.
Count Selected Ruft die Anzahl der markierten (hervorgehobenen) Reihen ab.
Count Focused Ruft die Reihennummer (Position) der fokussierten Reihe ab (0, wenn keine vorhanden ist).
Count Col Ruft die Anzahl der Spalten im Steuerelement ab (oder -1, wenn der Zählerstand nicht ermittelt werden kann).

Hinweis: Einige Anwendungen verhindern mit Absicht, dass ihr ListView-Text nicht abgerufen werden kann. In solchen Fällen wird ErrorLevel normalerweise auf 0 gesetzt (was auf Erfolg hinweist), allerdings werden alle Felder abgerufen, als wären sie leer. Beachten Sie zudem, dass #MaxMem keinen Einfluss darauf hat, wie viel Text aus einer ListView abgerufen werden kann.

Bei Erfolg wird ErrorLevel auf 0 gesetzt. Bei Misserfolg wird ErrorLevel auf 1 gesetzt und AusgabeVar leer gemacht. Fehler treten auf, wenn: 1) das Zielfenster oder Zielsteuerelement nicht existiert; 2) das Zielsteuerelement nicht vom Typ SysListView32 ist; 3) der Prozess, der die ListView enthält, nicht geöffnet werden konnte, weil er gesperrt ist oder Benutzerrechte fehlen; 4) die ColN-Option auf eine nicht-existierende Spalte verweist.

Das folgende Beispiel zeigt, wie man eine Parsende Schleife nutzen kann, um die Reihen und Felder aus einer ListView einzeln zu extrahieren:

ControlGet, AusgewählteReihen, List, Selected, SysListView321, Fenstertitel
Loop, Parse, AusgewählteReihen, `n  ; Die Reihen sind mit Zeilenumbruchszeichen (`n) getrennt.
{
    Reihennummer := A_Index
    Loop, Parse, A_LoopField, %A_Tab%  ; Die Felder (Spalten) jeder Reihe sind mit Tabulatorzeichen (A_Tab) getrennt.
        MsgBox Reihe #%Reihennummer% Spalte #%A_Index% enthält %A_LoopField%.
}

Das folgende Beispiel zeigt, wie man SendMessage nutzen kann, um die Spalten einer ListView kleiner/größer zu machen:

SendMessage, 4126, 0, 80, SysListView321, Fenstertitel  ; 4126 ist LVM_SETCOLUMNWIDTH.

Im oberen Beispiel kennzeichnet 0 die erste Spalte (1 die zweite, 2 die dritte und so weiter). 80 ist die neue Breite. Ersetzen Sie 80 mit -1, um die Spaltenbreite automatisch an den Inhalt anzupassen. Ersetzen Sie 80 mit -2, um das gleiche zu tun und die Textbreite der Überschrift einzubeziehen.

ListBox, ComboBox, DropDownList

Es kann nur der gesamte Text aus dem Steuerelement abgerufen werden (das heißt, dass die oben genannten ListView-Optionen wie Count und Selected nicht unterstützt werden).

Alle Listeneinträge, außer der letzte, enden mit einem Zeilenumbruchszeichen (`n). Das folgende Beispiel zeigt, wie man eine Parsende Schleife nutzen kann, um die Listeneinträge einzeln abzurufen:

ControlGet, Einträge, List,, ComboBox1, Fenstertitel
Loop, Parse, Einträge, `n
    MsgBox Eintragsnummer %A_Index% ist %A_LoopField%.

Checked

Ermittelt eine 1, wenn die CheckBox oder der Radio-Button markiert ist, oder eine 0, wenn nicht.

ControlGet, AusgabeVar, Checked ,, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Enabled

Ermittelt eine 1, wenn die Interaktion mit dem Steuerelement aktiviert ist, oder eine 0, wenn sie deaktiviert ist.

ControlGet, AusgabeVar, Enabled ,, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Visible

Ermittelt eine 1, wenn Steuerelement sichtbar ist, oder eine 0, wenn es versteckt ist.

ControlGet, AusgabeVar, Visible ,, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Tab

Ermittelt die Positionsnummer des aktuell geöffneten Tabs eines SysTabControl32-Steuerelements.

ControlGet, AusgabeVar, Tab ,, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Der erste Tab ist 1, der zweite ist 2 und so weiter. Das folgende Beispiel zeigt, wie stattdessen die Gesamtanzahl der Tabs (Seiten) eines Tab-Steuerelements ermittelt werden kann:

SendMessage, 0x1304,,, SysTabControl321, Fenstertitel  ; 0x1304 ist TCM_GETITEMCOUNT.
AnzahlTabs := ErrorLevel

FindString

Ermittelt die Positionsnummer eines ListBox- oder ComboBox-Listeneintrags, der exakt mit Zeichenkette übereinstimmt.

ControlGet, AusgabeVar, FindString, Zeichenkette , Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Der erste Listeneintrag im Steuerelement ist 1, der zweite ist 2 und so weiter. Wenn kein einziger Listeneintrag gefunden wurde, wird AusgabeVar leer gemacht und ErrorLevel auf 1 gesetzt.

Choice

Ermittelt den Namen des derzeit ausgewählten ListBox- oder ComboBox-Listeneintrags.

ControlGet, AusgabeVar, Choice ,, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Das folgende Beispiel zeigt, wie stattdessen die Positionsnummer des ausgewählten Listeneintrags ermittelt werden kann (verwenden Sie aber nur eine der beiden Zeilen):

SendMessage, 0x188, 0, 0, ListBox1, Fenstertitel  ; 0x188 ist LB_GETCURSEL (für eine ListBox).
SendMessage, 0x147, 0, 0, ComboBox1, Fenstertitel  ; 0x147 ist CB_GETCURSEL (für eine DropDownList oder ComboBox).
ChoicePos := ErrorLevel<<32>>32  ; Konvertiert UInt in Int, um -1 zu haben, wenn kein Listeneintrag ausgewählt ist.
ChoicePos += 1  ; Wandelt 0-basiert in 1-basiert um, so dass der erste Eintrag mit 1 beginnt, nicht 0.

LineCount

Ermittelt die Anzahl der Zeilen eines Edit-Steuerelements.

ControlGet, AusgabeVar, LineCount ,, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Alle Edit-Steuerelemente haben mindestens eine Zeile, selbst wenn das Steuerelement leer ist.

CurrentLine

Ermittelt die Positionsnummer des Edit-Steuerelement-Textcursors auf vertikaler Ebene (Zeilennummer).

ControlGet, AusgabeVar, CurrentLine ,, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Die erste Zeile ist 1. Wenn im Steuerelement ein Textbereich markiert ist, wird in AusgabeVar die Nummer der Zeile gespeichert, die den Startpunkt der Markierung kennzeichnet.

CurrentCol

Ermittelt die Positionsnummer des Edit-Steuerelement-Textcursors auf horizontaler Ebene (Spaltennummer).

ControlGet, AusgabeVar, CurrentCol ,, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Die erste Spalte ist 1. Wenn im Steuerelement ein Textbereich markiert ist, wird in AusgabeVar die Nummer der Spalte gespeichert, die den Startpunkt der Markierung kennzeichnet.

Line

Ermittelt den Text auf Zeile N eines Edit-Steuerelements.

ControlGet, AusgabeVar, Line, N , Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Die erste Zeile ist 1. Je nach Typ des Steuerelements endet AusgabeVar entweder mit einem CR-Zeichen (`r) oder einem CR-LF-Paar (`r`n). Wenn die angegebene Zeilennummer leer ist oder nicht existiert, wird ErrorLevel auf 1 gesetzt und AusgabeVar leer gemacht.

Selected

Ermittelt den markierten Text eines Edit-Steuerelements.

ControlGet, AusgabeVar, Selected ,, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Falls kein Text markiert ist, wird AusgabeVar leer gemacht und ErrorLevel auf 0 gesetzt (was auf Erfolg hinweist). Es kann vorkommen, dass bestimmte Typen von Steuerelementen wie RichEdit20A in manchen Fällen nicht den korrekten Text erzeugen (z. B. Metapad).

Style

Ruft eine 8-stellige Hexadezimalzahl ab, die den Style des Steuerelements repräsentiert.

ControlGet, AusgabeVar, Style ,, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Die Style-Tabelle beinhaltet eine Auflistung einiger Styles.

ExStyle

Ruft eine 8-stellige Hexadezimalzahl ab, die den erweiterten Style des Steuerelements repräsentiert.

ControlGet, AusgabeVar, ExStyle ,, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Die Style-Tabelle beinhaltet eine Auflistung einiger Styles.

Hwnd [v1.0.43.06+]

Ruft das Window Handle (HWND) des Steuerelements ab.

ControlGet, AusgabeVar, Hwnd ,, Steuerelement, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Zum Beispiel: ControlGet, AusgabeVar, Hwnd,, Edit1, Fenstertitel. Das HWND eines Steuerelements wird oft in Verbindung mit PostMessage, SendMessage und DllCall verwendet. Beachten Sie zudem, dass das HWND eines Steuerelements auch mit MouseGetPos abgerufen werden kann. Wenn Sie vorhaben, ein Steuerelement via HWND anzusteuern, müssen Sie ahk_id im Fenstertitel-Parameter angeben (das auch mit versteckten Steuerelementen funktioniert, selbst wenn DetectHiddenWindows ausgeschaltet ist).

ErrorLevel

[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.

Bei Erfolg wird ErrorLevel auf 0 gesetzt. Bei Misserfolg (z. B. wenn das Fenster oder Steuerelement nicht existiert) wird ErrorLevel auf 1 gesetzt und AusgabeVar leer gemacht.

Bemerkungen

Im Gegensatz zu Befehlen, die ein Steuerelement ändern, erfolgt nach ControlGet keine automatische Verzögerung; das heißt, dass SetControlDelay keine Wirkung auf ControlGet hat.

MouseGetPos kann genutzt werden, um das ClassNN oder HWND des Steuerelements unterhalb des Mauszeigers zu ermitteln. Mit WinGet ControlList kann eine Liste von Steuerelementen abgerufen werden, die in einem Fenster enthalten sind.

Fenstertitel und -texte unterscheiden zwischen Groß- und Kleinschreibung. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.

Siehe auch

Control, GuiControlGet, ControlMove, ControlGetText, ControlSetText, ControlGetPos, ControlClick, ControlFocus, ControlSend, WinGet

Beispiele

Beispiel #1

Ruft die erste Zeile des ersten Edit-Steuerelements ab:

ControlGet, AusgabeVar, Line, 1, Edit1, Beliebiger Fenstertitel

Beispiel #2

Ruft den derzeit aktiven Tab des ersten Tab-Steuerelements ab:

ControlGet, WelcherTab, Tab,, SysTabControl321, Beliebiger Fenstertitel
if ErrorLevel
    MsgBox Es wurde ein Problem festgestellt.
else
    MsgBox Tab #%WelcherTab% ist aktiv.