ControlGet

Ruft verschiedene Arten von Informationen über ein Steuerelement ab.

ControlGet, AusgabeVar, Unterbefehl , Wert, Steuerelement, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Parameter

AusgabeVar
Name der Ausgabevariable, 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-Bezeichnung (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 ein Steuerelement via HWND-Nummer (eindeutige ID) anzusteuern, muss der Steuerelement-Parameter leer gelassen und ahk_id %SteuerelementHwnd% als FensterTitel-Parameter übergeben werden (funktioniert auch bei versteckten Steuerelementen, selbst wenn DetectHiddenWindows ausgeschaltet ist). Die HWND-Nummer eines Steuerelements kann üblicherweise via ControlGet Hwnd, MouseGetPos oder DllCall() abgerufen werden.

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:

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, IgnoriereTitel, IgnoriereText

ListView

Wenn der Optionen-Parameter weggelassen wird oder leer ist, wird der gesamte Text im Steuerelement abgerufen. Alle Zeilen, außer die letzte, enden mit einem Zeilenumbruchszeichen (`n). Innerhalb jeder Zeile enden alle Felder (Spalten), außer dem letzten, 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):

Option Beschreibung
Selected Ruft nur die markierten (hervorgehobenen) Zeilen ab. Sind keine vorhanden, wird AusgabeVar leer gemacht.
Focused Ruft nur die fokussierte Zeile 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 Zeilen im Steuerelement repräsentiert.
Count Selected Ruft die Anzahl der markierten (hervorgehobenen) Zeilen ab.
Count Focused Ruft die Zeilennummer (Position) der fokussierten Zeile 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 mit einer parsenden Schleife einzelne Zeilen und Felder aus einer ListView extrahieren kann:

ControlGet, AusgewählteZeilen, List, Selected, SysListView321, FensterTitel
Loop, Parse, AusgewählteZeilen, `n  ; Die Zeilen sind mit Zeilenumbruchszeichen (`n) getrennt.
{
    ZeileNummer := A_Index
    Loop, Parse, A_LoopField, %A_Tab%  ; Die Felder (Spalten) jeder Zeile sind mit Tabulatorzeichen (A_Tab) getrennt.
        MsgBox Zeile #%ZeileNummer% 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, 0x101E, 0, 80, SysListView321, FensterTitel  ; 0x101E 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 die CheckBox abgehakt oder der Radio-Button eingeschaltet ist, oder 0, wenn nicht.

ControlGet, AusgabeVar, Checked ,, Steuerelement, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Enabled

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

ControlGet, AusgabeVar, Enabled ,, Steuerelement, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Visible

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

ControlGet, AusgabeVar, Visible ,, Steuerelement, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Tab

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

ControlGet, AusgabeVar, Tab ,, Steuerelement, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

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.
TabsAnzahl := ErrorLevel

FindString

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

ControlGet, AusgabeVar, FindString, Zeichenkette , Steuerelement, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

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, IgnoriereTitel, IgnoriereText

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

SendMessage, 0x0188, 0, 0, ListBox1, FensterTitel  ; 0x0188 ist LB_GETCURSEL (für eine ListBox).
SendMessage, 0x0147, 0, 0, ComboBox1, FensterTitel  ; 0x0147 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, IgnoriereTitel, IgnoriereText

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, IgnoriereTitel, IgnoriereText

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, IgnoriereTitel, IgnoriereText

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, IgnoriereTitel, IgnoriereText

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, IgnoriereTitel, IgnoriereText

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, IgnoriereTitel, IgnoriereText

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, IgnoriereTitel, IgnoriereText

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

Hwnd [v1.0.43.06+]

Ruft die HWND-Nummer (eindeutige ID) des Steuerelements ab.

ControlGet, AusgabeVar, Hwnd ,, Steuerelement, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Zum Beispiel: ControlGet, AusgabeVar, Hwnd,, Edit1, FensterTitel. Die HWND-Nummer (eindeutige ID) eines Steuerelements wird oft in Verbindung mit PostMessage, SendMessage und DllCall() genutzt. Die HWND-Nummer eines Steuerelements kann auch via MouseGetPos abgerufen werden. So eine HWND-Nummer kann direkt als ahk_id-FensterTitel verwendet werden (das auch mit versteckten Steuerelementen funktioniert, selbst wenn DetectHiddenWindows ausgeschaltet ist).

Fehlerbehandlung

[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-Bezeichnung oder die HWND-Nummer (eindeutige ID) 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.

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

Beispiele

Ruft die erste Zeile des ersten Edit-Steuerelements ab.

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

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.