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 die 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 Zielfensters benutzt.

Um mit dem Fenster-Handle (HWND) eines Steuerelements zu agieren, 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). Der Fenster-Handle (HWND) eines Steuerelements wird üblicherweise via ControlGet Hwnd, MouseGetPos oder DllCall abgerufen.

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

Ruft eine Liste von Elementen aus einer ListView, ListBox, ComboBox oder DropDownList ab. 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 Zeilen, außer die letzte, enden mit einem Zeilenumbruchszeichen (`n). Innerhalb jeder Reihe enden alle Felder (Spalten), außer das letzte, mit einem Tabulatorzeichen (`t).

Für Optionen können die folgenden Wörter angegeben werden (mehrere Wörter müssen mit Leer- oder Tabulatorzeichen voneinander getrennt werden):

Selected Ruft nur die markierten (hervorgehobenen) 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) ab (ersetzen Sie die 4 mit einer beliebigen 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, aber unter Berücksichtigung der Überschriftsbreite.

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

Ruft 1 ab, wenn das Häkchen der CheckBox oder die Markierung des Radio-Buttons gesetzt ist, oder 0, wenn nicht.

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

Enabled

Ruft 1 ab, wenn die Interaktion mit Steuerelement aktiviert ist, oder 0, wenn sie deaktiviert ist.

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

Visible

Ruft 1 ab, wenn Steuerelement sichtbar ist, oder 0, wenn es versteckt ist.

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

Tab

Ruft die Positionsnummer des aktuell ausgewählten Tabs eines SysTabControl32-Steuerelements ab.

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 man stattdessen die Gesamtanzahl der Tabs (Seiten) eines Tab-Steuerelements abrufen kann:

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

FindString

Ruft die Positionsnummer eines ListBox- oder ComboBox-Listeneintrags ab, 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

Ruft den Namen des aktuell ausgewählten ListBox- oder ComboBox-Listeneintrags ab.

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

Das folgende Beispiel zeigt, wie man stattdessen die Positionsnummer des ausgewählten Listeneintrags abrufen 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).
AuswahlPos := ErrorLevel<<32>>32  ; Konvertiert UInt in Int, um -1 im Falle eines nicht ausgewählten Eintrags zu haben.
AuswahlPos += 1  ; Wandelt 0-basiert in 1-basiert um, damit z. B. 1 dem ersten Eintrag entspricht.

LineCount

Ruft die Anzahl der Zeilen in einem Edit-Steuerelement ab.

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

Alle Edit-Steuerelemente, auch leere, haben mindestens eine Zeile.

CurrentLine

Ruft die Zeilennummer in einem Edit-Steuerelement ab, auf der sich aktuell der Cursor (Einfügemarke) befindet.

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

Die erste Zeile ist 1. Wenn im Steuerelement ein Textbereich markiert ist, enthält AusgabeVar die Zeilennummer, von wo aus die Markierung gestartet wurde.

CurrentCol

Ruft die Spaltennummer in einem Edit-Steuerelement ab, auf der sich aktuell der Cursor (Einfügemarke) befindet.

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

Die erste Spalte ist 1. Wenn im Steuerelement ein Textbereich markiert ist, enthält AusgabeVar die Spaltennummer, von wo aus die Markierung gestartet wurde.

Line

Ruft den Text auf Zeile N in einem Edit-Steuerelement ab.

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

Ruft den markierten Text in einem Edit-Steuerelement ab.

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

In der Style-Tabelle finden Sie 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

In der Style-Tabelle finden Sie eine Auflistung einiger Styles.

Hwnd [v1.0.43.06+]

Ruft den Fenster-Handle (HWND) des Steuerelements ab.

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

Zum Beispiel: ControlGet, AusgabeVar, Hwnd,, Edit1, Fenstertitel. Dieser Fenster-Handle (HWND) ist zum Beispiel nützlich, um ein Steuerelement via PostMessage, SendMessage und DllCall anzusteuern. Der Fenster-Handle eines Steuerelements kann auch via MouseGetPos abgerufen werden. Außerdem kann der Fenster-Handle eines Steuerelements direkt via ahk_id in einem Fenstertitel-Parameter angegeben werden (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 die ClassNN oder den HWND des Steuerelements unterhalb des Mauszeigers abzurufen. Mit WinGet ControlList kann eine Liste von Steuerelementen abgerufen werden, die in einem Fenster enthalten sind.

Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. 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 aktuell 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.