Ruft verschiedene Arten von Informationen über ein Steuerelement ab.
ControlGet, AusgabeVar, Unterbefehl , Wert, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Wenn leer oder weggelassen, wird das oberste Steuerelement des Zielfensters verwendet. Andernfalls geben Sie die ClassNN oder den Text des Steuerelements an, oder lassen Sie den Parameter leer und geben Sie ahk_id %StrlmntHwnd% im FensterTitel-Parameter an, um mit dem HWND des Steuerelements zu arbeiten. Einzelheiten finden Sie unter Steuerelementidentifikatoren.
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 (wie von Window Spy angezeigt).
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 bzw. 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:
Liefert eine Liste der Einträge/Zeilen in einem Listenfeld, einem Kombinationsfeld, einer Dropdownliste oder einem ListView-Steuerelement.
ControlGet, AusgabeVar, List , Optionen, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Die Ausgabe, Fehlerbehandlung und Verwendung des Optionen-Parameters sind abhängig vom Zielsteuerelement. Konkret heißt das:
Der Wert des Optionen-Parameters wird ignoriert. Mit anderen Worten: Es wird immer der gesamte Text des Steuerelements abgerufen, egal welcher Wert angegeben ist.
Jeder Eintrag außer dem letzten endet mit einem Zeilenvorschubzeichen (`n). Das folgende Beispiel zeigt, wie man mit einer parsenden Schleife die Einträge einzeln durchlaufen kann:
ControlGet, Einträge, List,, ComboBox1, FensterTitel
Loop, Parse, Einträge, `n
MsgBox Eintrag Nr. %A_Index% ist %A_LoopField%.
Wenn der Optionen-Parameter weggelassen wird oder leer ist, wird der gesamte Text des Steuerelements abgerufen. Andernfalls geben Sie für Optionen beliebig viele der folgenden Wörter an, jeweils getrennt durch ein Leer- oder Tabulatorzeichen:
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).
Beachten Sie, dass einige Anwendungen ihren Text von ListView-Steuerelementen privat speichern, um zu verhindern, dass dieser abgerufen werden kann. In solchen Fällen wird ErrorLevel normalerweise auf 0 gesetzt (was auf Erfolg hinweist), allerdings werden alle abgerufenen Felder leer sein. Beachten Sie auch, dass der Abruf von Text aus einem ListView-Steuerelement nicht durch #MaxMem limitiert ist.
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 das ListView-Steuerelement 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 Zeilen und Felder aus einem ListView-Steuerelement einzeln 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, die Spalten in einem ListView-Steuerelement kleiner/größer zu machen. Verwenden Sie dazu SendMessage wie folgt:
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.
Liefert 1, wenn ein Kontrollkästchen oder Optionsfeld markiert ist, oder 0, wenn unmarkiert.
ControlGet, AusgabeVar, Checked ,, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Liefert 1, wenn die Interaktion mit einem Steuerelement erlaubt ist, oder 0, wenn verboten.
ControlGet, AusgabeVar, Enabled ,, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Liefert 1, wenn ein Steuerelement sichtbar ist, oder 0, wenn versteckt.
ControlGet, AusgabeVar, Visible ,, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Liefert die Positionsnummer der aktiven Registerkarte in einem Registerkarten-Steuerelement.
ControlGet, AusgabeVar, Tab ,, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
AusgabeVar wird auf 1 für die erste Registerkarte gesetzt, 2 für die zweite und so weiter.
Um stattdessen herauszufinden, wie viele Registerkarten ein Registerkarten-Steuerelement hat, gehen Sie wie folgt vor:
SendMessage, 0x1304,,, SysTabControl321, FensterTitel ; 0x1304 ist TCM_GETITEMCOUNT. RegisterkartenAnzahl := ErrorLevel
Liefert die Positionsnummer eines Eintrags in einem Listenfeld, Kombinationsfeld oder einer Dropdownliste.
ControlGet, AusgabeVar, FindString, Zeichenkette , StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Zeichenkette muss der vollständige Text eines Eintrags sein.
AusgabeVar wird auf 1 für den ersten Eintrag gesetzt, 2 für den zweiten und so weiter.
Wenn kein Eintrag gefunden wurde, wird AusgabeVar leer gemacht und ErrorLevel auf 1 gesetzt.
Liefert den Text des aktuell ausgewählten Eintrags in einem Listenfeld, Kombinationsfeld oder einer Dropdownliste.
ControlGet, AusgabeVar, Choice ,, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Wenn kein Eintrag ausgewählt ist, wird AusgabeVar leer gemacht und ErrorLevel auf 1 gesetzt.
Bei einem Mehrfachauswahl-Listenfeld wird AusgabeVar immer auf den Text des Eintrags gesetzt, der den Tastaturfokus hat. In der Regel ist das der zuletzt ausgewählte Eintrag bei mehreren ausgewählten Einträgen.
Um stattdessen die Positionsnummer des ausgewählten Eintrags abzurufen, gehen Sie wie folgt vor (verwenden Sie nur eine der ersten zwei Zeilen, also entweder LB_GETCURSEL für Listenfeld oder CB_GETCURSEL für Kombinationsfeld oder Dropdownliste):
SendMessage, 0x0188, 0, 0, ListBox1, FensterTitel ; 0x0188 ist LB_GETCURSEL. SendMessage, 0x0147, 0, 0, ComboBox1, FensterTitel ; 0x0147 ist CB_GETCURSEL. ; Konvertiert die Pos von UInt in Int, um -1 zu haben, wenn nichts ausgewählt ist, ; und von 0-basiert zu 1-basiert, damit der erste Eintrag Pos 1 statt 0 ist: AuswahlPosN := (ErrorLevel<<32>>32) + 1
Liefert die Anzahl der Zeilen in einem Eingabefeld.
ControlGet, AusgabeVar, LineCount ,, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
AusgabeVar wird auf 1 für insgesamt eine Zeile gesetzt, 2 für zwei Zeilen und so weiter.
Alle Eingabefelder haben mindestens eine Zeile, selbst wenn das Steuerelement leer ist.
Liefert die Zeilennummer in einem Eingabefeld, auf der sich die Einfügemarke befindet.
ControlGet, AusgabeVar, CurrentLine ,, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
AusgabeVar wird auf 1 für die erste Zeile gesetzt, 2 für die zweite und so weiter.
Wenn Text im Steuerelement markiert ist, wird AusgabeVar auf die Zeilennummer gesetzt, wo die Markierung beginnt.
Liefert die Spaltennummer in einem Eingabefeld, auf der sich die Einfügemarke befindet.
ControlGet, AusgabeVar, CurrentCol ,, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
AusgabeVar wird auf 1 für die erste Spalte gesetzt, 2 für die zweite und so weiter.
Wenn Text im Steuerelement markiert ist, wird AusgabeVar auf die Spaltennummer gesetzt, wo die Markierung beginnt.
Liefert den Text einer Zeile in einem Eingabefeld per Zeilennummer.
ControlGet, AusgabeVar, Line, N , StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
N muss eine Zeilennummer sein. Die erste Zeile ist 1, die zweite 2 und so weiter.
Wenn N nicht existiert, wird AusgabeVar leer gemacht und ErrorLevel auf 1 gesetzt.
Je nach Typ des Steuerelements kann AusgabeVar entweder mit einem Wagenrücklauf (`r) oder einem Wagenrücklauf-Zeilenvorschub-Paar (`r`n) enden.
Liefert den markierten Text in einem Eingabefeld.
ControlGet, AusgabeVar, Selected ,, StrlmntID, 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 manchmal nicht den korrekten Text erzeugen (z.B. Metapad).
Liefert eine 8-stellige Hexadezimalzahl, die den Style eines Steuerelements repräsentiert.
ControlGet, AusgabeVar, Style ,, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Einige Styles finden Sie unter Fenster- und Steuerelement-Styles.
Liefert eine 8-stellige Hexadezimalzahl, die den erweiterten Style eines Steuerelements repräsentiert.
ControlGet, AusgabeVar, ExStyle ,, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
Einige Styles finden Sie unter Fenster- und Steuerelement-Styles.
Liefert das Fensterhandle (HWND) eines Steuerelements.
ControlGet, AusgabeVar, Hwnd ,, StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
[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.
Dieser Befehl ist für die Verwendung mit Steuerelementen in einem Nicht-GUI-Fenster vorgesehen, also einem Fenster, das nicht mit dem Gui-Befehl erstellt wurde. Er funktioniert am besten mit den gängigen oder vordefinierten Steuerelementen von Microsoft. Einige Anwendungen verwenden jedoch benutzerdefinierte oder modifizierte Steuerelemente – in diesem Fall funktioniert der Befehl möglicherweise nicht wie erwartet. Für GUI-Steuerelemente ist es in der Regel sinnvoller, GuiControlGet zu verwenden, sofern es ein entsprechendes Gegenstück gibt.
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 oder das HWND des Steuerelements unter dem Mauszeiger abgerufen werden. Mit WinGet ControlList kann eine Liste von allen Steuerelementen in einem Fenster abgerufen werden.
Control, GuiControlGet, ControlMove, ControlGetText, ControlSetText, ControlGetPos, ControlClick, ControlFocus, ControlSend, WinGet
Liefert den Text der zweiten Zeile im ersten Eingabefeld eines GUI- oder Nicht-GUI-Fensters.
ControlGet, AusgabeVar, Line, 2, Edit1, Beliebiger Fenstertitel
Liefert die Positionsnummer der aktiven Registerkarte im ersten Registerkarten-Steuerelement eines GUI- oder Nicht-GUI-Fensters.
ControlGet, PosNummer, Tab,, SysTabControl321, Beliebiger Fenstertitel
if ErrorLevel
MsgBox Es wurde ein Problem festgestellt.
else
MsgBox Registerkarte Nr. %PosNummer% ist aktiv.
Liefert das Fensterhandle (HWND) des ersten Eingabefelds in einem GUI- oder Nicht-GUI-Fenster.
ControlGet, AusgabeVar, Hwnd,, Edit1, Beliebiger Fenstertitel