ControlGetText

Liefert den Text eines Steuerelements.

Text := ControlGetText(StrlmntID , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)

Parameter

StrlmntID

Typ: Zeichenkette, Integer oder Objekt

ClassNN, Text oder HWND des Steuerelements, oder ein Objekt mit einer Hwnd-Eigenschaft. Einzelheiten finden Sie unter Steuerelementidentifikatoren.

FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Typ: Zeichenkette, Integer oder Objekt

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. Verwendet man reine HWNDs, werden versteckte Fenster immer erkannt. Standardmäßig kann ein Fenstertitel den angegebenen FensterTitel oder AusnahmeTitel an beliebiger Stelle enthalten, um eine Übereinstimmung zu sein, was mit SetTitleMatchMode geändert werden kann.

Rückgabewert

Typ: Zeichenkette

Diese Funktion gibt den Text des angegebenen Steuerelements zurück.

Fehlerbehandlung

Es wird ein TargetError ausgelöst, wenn das Fenster oder Steuerelement nicht gefunden werden konnte.

Bemerkungen

Diese Funktion ist für die Verwendung mit Steuerelementen in einem Nicht-GUI-Fenster vorgesehen, also einem Fenster, das nicht mit der Gui-Funktion erstellt wurde. Sie funktioniert am besten mit den gängigen oder vordefinierten Steuerelementen von Microsoft. Einige Anwendungen verwenden jedoch benutzerdefinierte oder modifizierte Steuerelemente – in diesem Fall funktioniert die Funktion möglicherweise nicht wie erwartet. Für GUI-Steuerelemente ist es in der Regel sinnvoller, GuiControl.Text oder GuiControl.Value zu verwenden.

Mit ControlGetItems oder ListViewGetContent können stattdessen Texte eines Listenfelds, eines Kombinationsfelds, einer Dropdownliste oder eines ListView-Steuerelements abgerufen werden.

Wenn der abgerufene Text gekürzt (unvollständig) ist, kann es erforderlich sein, den Text stattdessen durch Senden der WM_GETTEXT-Meldung via SendMessage abzurufen. Der Grund dafür ist, dass einige Anwendungen nur sporadisch oder gar nicht auf die WM_GETTEXTLENGTH-Meldung reagieren, wodurch AutoHotkey den Rückgabewert zu klein für den gesamten Text macht.

Diese Funktion kann 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. Text := "".

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 WinGetControls oder WinGetControlsHwnd kann ein Array von Steuerelementen in einem Fenster abgerufen werden.

ControlSetText, WinGetText, GuiControl.Text, GuiControl.Value, Control-Funktionen

Beispiele

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

Text := ControlGetText("Edit1", "Unbenannt -")

Ermittelt und meldet den aktuellen Text im Eingabefeld des Hauptfensters.

ListVars
WinWaitActive "ahk_class AutoHotkey"
MsgBox ControlGetText("Edit1") ; Verwendet das oben gefundene Fenster.