Ruft verschiedene Arten von Informationen über ein Steuerelement ab.
ControlGet, AusgabeVar, Unterbefehl , Wert, Steuerelement, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
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.
Geben Sie für Unterbefehl Folgendes an:
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
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.
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%.
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
Ruft 1 ab, wenn die Interaktion mit Steuerelement aktiviert ist, oder 0, wenn sie deaktiviert ist.
ControlGet, AusgabeVar, Enabled ,, Steuerelement, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Ruft 1 ab, wenn Steuerelement sichtbar ist, oder 0, wenn es versteckt ist.
ControlGet, AusgabeVar, Visible ,, Steuerelement, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
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
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.
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.
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.
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.
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.
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.
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).
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.
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.
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).
[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.
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