Liefert den Text eines Controls.
ControlGetText, OutputVar [, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]
| OutputVar |
Der Name der Variablen, in der der Text gespeichert werden soll. |
| Control |
Entweder die ClassNN (Klassenname und Instanznummer) oder der Name/Text (Aufschrift/Inhalt) des Controls, wie sie mit dem "Window Spy" ermittelt werden können. Bei Angabe von Name/Text wird das Suchergebnis von der aktuellen Einstellung für SetTitleMatchMode beeinflusst. Wenn der Parameter leer gelassen wird, wird das oberste Control des Zielfensters verwendet. Wenn mit dem HWND (window handle, ahk_id, eindeutige Identifikationsnummer) eines Controls gearbeitet werden soll, wird der Control Parameter leer gelassen und stattdessen ahk_id %ControlHwnd% als WinTitle Parameter angebeben. Das funktioniert auch für verborgene Controls, selbst wenn DetectHiddenWindows auf OFF gesetzt ist. Das HWND eines Controls kann z.B. mit ControlGet Hwnd, MouseGetPos oder DllCall ermittelt werden. |
| WinTitle |
Der vollständige Titel oder ein Teil des Titels des Zielfensters (das Suchergebnis wird von SetTitleMatchMode beeinflusst). Wenn dieser und die nächsten 3 Parameter leer gelassen werden, wird das LastFoundWindow (zuletzt gefundene Fenster) verwendet. Wenn hier der Buchstabe A angegeben wird und die nächsten 3 Parameter leer gelassen werden, wird das momentan aktive Fenster verwendet. Für eine Fensterklasse wird ahk_class ExakterKlassenName (wie vom "Window Spy" angezeigt) angegeben, für eine Prozess ID (PID) ahk_pid %VarMitInhaltPID%, für eine Fenstergruppe ahk_group GroupName und für die eindeutige ID eines Fensters ahk_id %VarMitInhaltID%. Die Suche kann durch Angabe mehrerer Kriterien eingeschränkt werden. Beispiel: My File.txt ahk_class Notepad |
| WinText | Wenn angegeben, muss dieser Parameter den Inhalt oder einen Teil des Inhalts eines einzelnen Textelementes des Zielfensters enthalten, wie er z.B. vom mitgelieferten "Window Spy" angezeigt wird. Verborgene Textelemente werden nur gefunden, wenn DetectHiddenText vorher auf ON gesetzt wurde. |
| ExcludeTitle |
Fenster, deren Titel diesen Wert enthalten, werden bei der Suche übergangen. |
| ExcludeText |
Fenster, deren Text diesen Wert enthält, werden bei der Suche übergangen. |
ErrorLevel wird im Falle eines Problems auf 1 gesetzt, sonst auf 0.
ACHTUNG: Um den Text eines ListViews, einer ListBox oder einer ComboBox abzurufen, muss ControlGet List verwendet werden.
Wenn der gelieferte Text abgeschnitten bzw. unvollständig erscheint, versuche VarSetCapacity(OutputVar, 55) vor ControlGetText (ersetze dabei den Wert 55 durch eine Größenangabe, die sinnvoll größer als die Länge des abgeschnittenen Textes ist). Das ist notwendig, weil manche Anwendungen nicht korrekt auf die Nachricht WM_GETTEXTLENGTH (Textlänge übergeben) antworten und AutoHotkey deshalb die Ausgabevariable mit einer Größe einrichtet, die kleiner als die tatsächliche Länge des Textes ist.
Die Länge des gelieferten Textes wird durch die maximale Kapazität der Variablen begrenzt und kann über die Direktive #MaxMem verändert werden. Als Ergebnis davon kann diese Anweisung eine große Menge an Speicherplatz (RAM) belegen, wenn das Zielcontrol (z.B. ein Editor, der ein großes Dokument geöffnet hat) eine große Menge Text enthält. Der Speicherplatz der Variablen kann aber nach Verarbeitung wieder freigegeben werden, indem man der Variablen eine leere Zeichenfolge zuweist, z.B. mit OutputVar = oder OutputVar := ""
Der von den meisten Controls gelieferte Text verwendet Wagenrücklauf + Zeilenvorschub (CRLF: `r`n) anstelle eines einzelnen Zeilenvorschubs (LF: `n) zur Kennzeichnung des Zeilenendes.
SetTitleMatchMode Slow wird nicht benötigt, weil ControlGetText den Text immer mit der langsamen (slow) Methode abruft, weil das mit mehr Arten von Controls erfolgreich funktioniert.
Für eine Auflistung aller Controls eines Fensters verwendet man WinGet ControlList.
Bei Fenstertiteln und -texten muss die Groß/Kleinschreibung beachtet werden. Verborgene Fenster werden nur gefunden, wenn DetectHiddenWindows vorher auf ON gesetzt wurde.
ControlSetText, WinGetText, Control, ControlGet, ControlMove, ControlFocus, ControlClick, ControlSend, #MaxMem
ControlGetText, OutputVar, Edit1, Untitled -