ControlGetText

Liefert den Text eines Steuerelements.

ControlGetText, AusgabeVar , StrlmntID, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Parameter

AusgabeVar

Name der Ausgabevariable, in der der abgerufene Text gespeichert werden soll.

StrlmntID

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.

FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

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.

Fehlerbehandlung

[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.

Bemerkungen

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.

Mit ControlGet List kann stattdessen der Text eines Listenfelds, eines Kombinationsfelds, einer Dropdownliste oder eines ListView-Steuerelements abgerufen werden.

Wenn der abgerufene Text gekürzt (unvollständig) ist, versuchen Sie es mit VarSetCapacity(AusgabeVar, 55) vor ControlGetText (ersetzen Sie 55 mit einer Zahl, die wesentlich größer ist als die Länge des gekürzten Textes). Dies ist in der Regel erforderlich, 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 (was mit der #MaxMem-Direktive geändert werden kann). Dieser Befehl kann daher sehr viel Arbeitsspeicher beanspruchen, wenn das Zielsteuerelement eine große Menge an Text enthält (z.B. wenn ein großes Dokument in einem Texteditor geöffnet wurde). Allerdings kann der Speicher einer Variable nach ihrer Verwendung wieder freigegeben werden, indem ihr ein leerer Wert zugewiesen wird, d.h. AusgabeVar := "".

Die meisten Steuerelemente verwenden ein Wagenrücklauf-Zeilenvorschub-Paar (`r`n) anstelle eines einzelnen Zeilenvorschubs (`n) für ihre abgerufenen Texte, um das Ende einer Zeile zu markieren.

SetTitleMatchMode Slow muss nicht verwendet werden, da ControlGetText den Text immer im langsamen Modus abruft (dieser Modus funktioniert mit viel mehr Steuerelementen).

Mit WinGet ControlList kann eine Liste von Steuerelementen in einem Fenster abgerufen werden.

ControlSetText, WinGetText, Control, ControlGet, ControlMove, ControlFocus, ControlClick, ControlSend, GuiControlGet, #MaxMem

Beispiele

Ruft den aktuellen Text aus dem Notepad-Eingabefeld ab und speichert ihn in AusgabeVar. Dieses Beispiel kann unter Windows 11 oder höher fehlschlagen, da es die klassische Version von Notepad erfordert.

ControlGetText, AusgabeVar, Edit1, Unbenannt -

Ermittelt und meldet den aktuellen Text im Eingabefeld des Hauptfensters.

ListVars
WinWaitActive ahk_class AutoHotkey
ControlGetText, AusgabeVar, Edit1 ; Verwendet das oben gefundene Fenster.
MsgBox % AusgabeVar