Ruft den Text eines Steuerelements ab.
ControlGetText, AusgabeVar , Steuerelement, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Name der Ausgabevariable, in der der abgerufene Text gespeichert werden soll.
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 weggelassen wird oder leer ist, wird das oberste Steuerelement des Zielfensters verwendet.
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.
Der Titel oder andere Möglichkeiten zum Identifizieren des Zielfensters. Weitere Informationen finden Sie unter FensterTitel-Parameter.
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.
Alle Fenster, die diesen Wert in ihren Titeln enthalten, werden ignoriert.
Alle Fenster, die diesen Wert in ihren Textelementen enthalten, werden ignoriert.
[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.
ErrorLevel wird bei Misserfolg auf 1 und bei Erfolg auf 0 gesetzt.
Hinweis: Mit ControlGet List kann stattdessen der Text einer ListView, ListBox oder ComboBox abgerufen werden.
Wenn der abgerufene Text abgeschnitten (unvollständig) zu sein scheint, können Sie versuchen, VarSetCapacity(AusgabeVar, 55)
vor ControlGetText zu setzen [ersetzen Sie 55 mit einer Zeichenlänge, die wesentlich länger ist als der abgeschnittene Text]. Dies muss in der Regel getan werden, wenn AutoHotkey die Ausgabevariable für den Text zu klein macht, weil die Anwendung, deren Text abgerufen werden soll, nur sporadisch oder gar nicht auf die WM_GETTEXTLENGTH-Meldung reagiert.
Die Menge des abgerufenen Textes ist auf die maximale Kapazität einer Variable beschränkt (die via #MaxMem-Direktive geändert werden kann). Dieser Befehl kann demzufolge sehr viel Arbeitsspeicher beanspruchen, wenn das Zielsteuerelement eine große Menge an Text beinhaltet (z. B. wenn ein großes Dokument im Texteditor geöffnet wurde). Der Speicher einer Variable kann aber, nachdem sie verwendet wurde, wieder freigegeben werden, indem man ihr einen leeren Wert zuweist, z. B. AusgabeVar =
.
Die meisten Steuerelemente markieren das Ende einer Zeile mit einem CR-LF-Paar (`r`n) statt mit einem einzelnen LF-Zeichen (`n).
SetTitleMatchMode Slow
muss nicht gesetzt werden, weil ControlGetText den Text immer mithilfe der langsamen Methode abruft (mit dieser Methode können deutlich mehr Steuerelemente angesteuert werden).
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.
ControlSetText, WinGetText, Control, ControlGet, ControlMove, ControlFocus, ControlClick, ControlSend, #MaxMem
Ruft den aktuellen Text im Eingabefeld des Texteditors ab und speichert ihn in AusgabeVar. Dieses Beispiel kann unter Windows 11 oder höher fehlschlagen, da es die klassische Version vom Texteditor erfordert.
ControlGetText, AusgabeVar, Edit1, Unbenannt -
Ermittelt und meldet den aktuellen Text im Eingabefeld des Hauptfensters.
ListVars WinWaitActive ahk_class AutoHotkey ControlGetText, AusgabeVar, Edit1 ; Nutze das oben gefundene Fenster. MsgBox % AusgabeVar