Ruft verschiedene Arten von Informationen über ein Steuerelement ab.
ControlGet, AusgabeVar, Unterbefehl , Wert, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Wenn leer oder weggelassen, wird das oberste Steuerelement des Zielfensters verwendet. Andernfalls geben Sie entweder die ClassNN-Bezeichnung (Klassenname und Instanznummer des Steuerelements) oder den Text des Steuerelements an, die beide mit dem internen Tool "Window Spy" ermittelt werden können. Wenn Text verwendet wird, ist das Übereinstimmungsverhalten abhängig von SetTitleMatchMode.
Um mit dem Fensterhandle (HWND) eines Steuerelements zu arbeiten, lassen Sie den Steuerelement-Parameter leer und übergeben Sie ahk_id %StrlmntHwnd%
als FensterTitel-Parameter (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.
Wenn jeder dieser Parameter leer ist oder weggelassen wird, wird das Zuletzt Gefundene Fenster verwendet. 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.
Geben Sie für Unterbefehl Folgendes an:
Ruft eine Liste der Einträge in einer ListView, ListBox, ComboBox oder DropDownList ab. Für ListView können zusätzliche Optionen angegeben werden.
ControlGet, AusgabeVar, List , Optionen, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Wenn der Optionen-Parameter weggelassen wird oder leer ist, wird der gesamte Text im Steuerelement abgerufen. Jede Zeile außer der letzten endet mit einem Zeilenvorschubzeichen (`n). Innerhalb jeder Zeile endet jedes Feld (Spalte) außer dem letzten mit einem Tabulatorzeichen (`t).
Geben Sie für Optionen beliebig viele der folgenden Wörter an, jeweils getrennt durch ein Leer- oder Tabulatorzeichen:
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. |
ColN | Ruft nur die N-te Spalte (Feld) ab. Ersetzen Sie N mit einer beliebigen Zahl. Zum Beispiel ruft Col4 die vierte Spalte ab. |
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 (andernfalls 0). |
Count Col | Ruft die Anzahl der Spalten im Steuerelement ab (oder -1, wenn die Anzahl nicht ermittelt werden kann). |
Hinweis: Einige Anwendungen behandeln die Daten ihrer ListView vertraulich, so dass ihr Text nicht abgerufen werden kann. In solchen Fällen wird ErrorLevel normalerweise auf 0 gesetzt (was auf Erfolg hinweist), aber alle abgerufenen Felder sind leer. Beachten Sie auch, 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. Misserfolg tritt auf, wenn: 1) das Zielfenster oder Zielsteuerelement nicht existiert; 2) das Zielsteuerelement nicht vom Typ SysListView32 ist; 3) der Prozess, der die ListView besitzt, nicht geöffnet werden konnte, z.B. weil Benutzerrechte fehlen oder der Prozess gesperrt ist; 4) die ColN-Option eine nicht-existierende Spalte angibt.
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 ; Zeilen sind mit Zeilenvorschüben (`n) voneinander getrennt. { ZeileNummer := A_Index Loop, Parse, A_LoopField, %A_Tab% ; Die Felder (Spalten) jeder Zeile sind mit Tabulatorzeichen (A_Tab) getrennt. MsgBox Zeile Nr. %ZeileNummer% Spalte Nr. %A_Index% enthält %A_LoopField%. }
Es ist auch möglich, mit SendMessage die Spalten einer ListView kleiner/größer zu machen. Zum Beispiel:
SendMessage, 0x101E, 0, 80, SysListView321, FensterTitel ; 0x101E ist LVM_SETCOLUMNWIDTH.
Im obigen Beispiel steht 0 für die erste Spalte (1 für die zweite, 2 für 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 dasselbe zu tun, aber unter Berücksichtigung der Überschriftsbreite.
Es kann nur der gesamte Text aus dem Steuerelement abgerufen werden (d.h. die oben genannten ListView-Optionen wie Count und Selected werden nicht unterstützt).
Jeder Listeneintrag außer dem letzten endet mit einem Zeilenvorschubzeichen (`n). Das folgende Beispiel zeigt, wie man mit einer parsenden Schleife die Listeneinträge einzeln durchlaufen kann:
ControlGet, Einträge, List,, ComboBox1, FensterTitel Loop, Parse, Einträge, `n MsgBox Eintragsnummer %A_Index% ist %A_LoopField%.
Ruft 1 ab, wenn die CheckBox/Radio eingeschaltet ist, oder 0, wenn nicht.
ControlGet, AusgabeVar, Checked ,, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Ruft 1 ab, wenn die Interaktion mit Steuerelement erlaubt ist, oder 0, wenn sie verboten ist.
ControlGet, AusgabeVar, Enabled ,, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Ruft 1 ab, wenn Steuerelement sichtbar ist, oder 0, wenn es versteckt ist.
ControlGet, AusgabeVar, Visible ,, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Ruft die Nummer des aktuell ausgewählten Tabs eines SysTabControl32-Steuerelements ab.
ControlGet, AusgabeVar, Tab ,, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Der erste Tab ist 1, der zweite 2 und so weiter. Um stattdessen herauszufinden, wie viele Tabs (Seiten) in einem Tab-Steuerelement vorhanden sind, gehen Sie wie folgt vor:
SendMessage, 0x1304,,, SysTabControl321, FensterTitel ; 0x1304 ist TCM_GETITEMCOUNT. TabsAnzahl := ErrorLevel
Ruft die Nummer eines ListBox- oder ComboBox-Eintrags ab, der exakt mit Zeichenkette übereinstimmt.
ControlGet, AusgabeVar, FindString, Zeichenkette , Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Der erste Listeneintrag im Steuerelement ist 1, der zweite 2 und so weiter. Wurde kein Listeneintrag gefunden, wird AusgabeVar leer gemacht und ErrorLevel auf 1 gesetzt.
Ruft den Namen des aktuell ausgewählten ListBox- oder ComboBox-Eintrags ab.
ControlGet, AusgabeVar, Choice ,, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Um stattdessen die Positionsnummer des ausgewählten Listeneintrags abzurufen, gehen Sie wie folgt vor (verwenden Sie aber nur eine der ersten zwei 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 ; Konvertiert 0-basiert in 1-basiert, d.h. der erste Eintrag ist 1, nicht 0.
Ruft die Anzahl der Zeilen in einem Edit-Steuerelement ab.
ControlGet, AusgabeVar, LineCount ,, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Alle Edit-Steuerelemente, auch leere, haben mindestens eine Zeile.
Ruft die Nummer der Zeile in einem Edit-Steuerelement ab, auf der sich der Textcursor (Einfügemarke) aktuell befindet.
ControlGet, AusgabeVar, CurrentLine ,, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Die erste Zeile ist 1. Wenn Text im Steuerelement markiert ist, wird AusgabeVar auf die Zeilennummer gesetzt, wo die Markierung beginnt.
Ruft die Nummer der Spalte in einem Edit-Steuerelement ab, auf der sich der Textcursor (Einfügemarke) aktuell befindet.
ControlGet, AusgabeVar, CurrentCol ,, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Die erste Spalte ist 1. Wenn Text im Steuerelement markiert ist, wird AusgabeVar auf die Spaltennummer gesetzt, wo die Markierung beginnt.
Ruft den Text auf Zeile N in einem Edit-Steuerelement ab.
ControlGet, AusgabeVar, Line, N , Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Die erste Zeile ist 1. Je nach Typ des Steuerelements kann AusgabeVar entweder mit einem Wagenrücklauf (`r) oder einem Wagenrücklauf-Zeilenvorschub-Paar (`r`n) enden. 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, AusnahmeTitel, AusnahmeText
Wenn 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 den Style des Steuerelements als 8-stellige Hexadezimalzahl ab.
ControlGet, AusgabeVar, Style ,, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Einige Styles finden Sie unter Fenster- und Steuerelement-Styles.
Ruft den erweiterten Style des Steuerelements als 8-stellige Hexadezimalzahl ab.
ControlGet, AusgabeVar, ExStyle ,, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Einige Styles finden Sie unter Fenster- und Steuerelement-Styles.
Ruft das Fensterhandle (HWND) des Steuerelements ab.
ControlGet, AusgabeVar, Hwnd ,, Steuerelement, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Zum Beispiel: ControlGet, AusgabeVar, Hwnd,, Edit1, FensterTitel
. Die HWND-Nummer (eindeutige ID) eines Steuerelements wird oft in Verbindung mit PostMessage, SendMessage und DllCall() verwendet. Die HWND-Nummer eines Steuerelements kann auch mit 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, d.h. SetControlDelay hat keinen Einfluss auf ControlGet.
Mit MouseGetPos kann die ClassNN-Bezeichnung oder HWND-Nummer (eindeutige ID) des Steuerelements unter dem Mauszeiger abgerufen werden. Mit WinGet ControlList kann eine Liste von Steuerelementen in einem Fenster abgerufen werden.
Control, GuiControlGet, ControlMove, ControlGetText, ControlSetText, ControlGetPos, ControlClick, ControlFocus, ControlSend, WinGet