GuiControlGet


Liefert verschiedene Arten von Informationen über ein AutoHotkey GUI-Control.

GuiControlGet, OutputVar [, Sub-command, ControlID, Param4]

Parameter

OutputVar

Der Name der Variablen, in der das Ergebnis gespeichert werden soll. Wenn die Anweisung nicht ausgeführt werden kann (s.u. ErrorLevel), wird die Variable geleert.

Sub-command

Siehe untenstehende Auflistung.

ControlID

Wenn dieser Parameter leer ist oder weggelassen wird, wird der Inhalt von OutputVar verwendet. Beispiel: GuiControlGet, MyEdit entspricht GuiControlGet, MyEdit,, MyEdit.

Wenn dem Control eine Variable zugeordnet wurde (vName), sollte der Name dieser Variablen als ControlID angegeben werden. Diese Methode hat den Vorrang gegenüber den weiteren nachfolgend beschriebenen. Aus diesem Grund ist es empfehlenswert, allen Controls, die später mit GuiControl oder GuiControlGet bearbeitet werden sollen, eine Variable zuzuordnen, selbst wenn das Control keine Eingaben entgegennehmen kann (wie z.B. GroupBox oder Text).

Anderenfalls kann in ControlID entweder die ClassNN (der Klassenname und die Instanznummer) oder der Name/Text (Aufschrift/Inhalt) des Controls angegeben werden, die beide mit dem mitgelieferten Tool "Window Spy" ermittelt werden können. Bei Angabe von Name/Text wird das Suchergebnis von der aktuellen Einstellung für SetTitleMatchMode beeinflusst. Hinweis: Auch der Dateiname eines Picture-Controls kann, so wie er bei der Erstellung des Controls angegeben wurde, als ControlID verwendet werden.

Param4

Dieser Parameter wird weggelassen, wenn es nicht in der untenstehenden Auflistung der Sub-commands anders beschrieben ist.

ErrorLevel

ErrorLevel wird auf 1 gesetzt, wenn das angegebene Fenster/Control nicht existiert oder andere Probleme die Ausführung der Anweisung verhindern, anderenfalls auf 0.

Sub-commands

(Leer): Sub-command wird leer gelassen, um den Inhalt des Controls anzufordern. Das ist für alle Arten von Controls mit Ausnahme der folgenden selbsterklärend:

Picture: Liefert den Namen der Bilddatei, der dem Control ursprünglich bei der Erstellung zugewiesen wurde. Dieser Name ändert sich auch dann nicht, wenn dem Control im Skript eine neue Bilddatei zugewiesen wird.

Edit: Liefert den Inhalt. Alle Zeilenumbrüche werden dabei als einzelne Zeilenvorschübe (LF: `n) dargestellt, anders als bei den allgemeinen Anweisungen wie ControlGetText und ControlSetText, die das normale CR+LF (`r`n) verwenden.

Hotkey: Wird geleert, wenn das Control keinen Hotkey enthält. Anderenfalls werden die Modifizierungstasten und der Tastenname geliefert. Beipiele: ^!C, ^Home, +^NumpadHome.

Checkbox/Radio: Liefert 1, wenn das Control angeschaltet ist, 0, wenn es ausgeschaltet ist, oder -1, wenn es ausgegraut ist. Um stattdessen den Erläuterungstext zu erhalten, muss in Param4 das Wort "Text" angegeben werden. Hinweis: Anders, als bei der Gui Submit Anweisung, werden Radiobuttons immer einzeln abgefragt, auch wenn sie einer Gruppe angehören.

UpDown/Slider/Progress: Liefert den aktuellen Positionswert.

Tab/DropDownList/ComboBox/ListBox: Liefert den Text/Namen des ausgewählten Elements/Registers (oder seine Position, wenn die Option AltSubmit angegeben wurde). Wenn in einer ComboBox kein Listenelement ausgewählt ist, wird stattdessen der Inhalt des Eingabefeldes geliefert. Bei einer ListBox mit Mehrfachauswahl wird für die Ausgabe das aktuelle Listentrennzeichen der GUI verwendet.

ListView und TreeView: Diese Controls werden nicht unterstützt, wenn Sub-command leer ist. Stattdessen verwendet man die eingebauten ListView-Funktionen und TreeView-Funktionen.

StatusBar: Liefert nur den Text des ersten Teils.

Hinweis: Um anstelle des Inhalts unbedingt den Erläuterungstext bzw. die Aufschrift eines Controls abzufragen, muss in Param4 das Wort "Text" angegeben werden.


GuiControlGet, OutputVar, Pos
: Liefert die Position und Größe eines Controls. Die Position ist relativ zur oberen linken Ecke der Innenfläche des GUI Fensters, die weder die Titelzeile noch die Menüzeile und die Ränder umfasst. Das Ergebnis wird in vier Variablen gespeichert, deren Namen alle mit OutputVar beginnen, gefolgt von einem der folgenden Buchstaben: X (X-Koordinate), Y (Y-Koordinate), W (Breite) und H (Höhe).

Beipiel:

GuiControlGet, MyEdit, Pos
MsgBox Die X-Koordinate ist %MyEditX%. Die Y-Koordinate ist %MyEditY%. Die Breite ist %MyEditW%. Die Höhe ist %MyEditH%.

Wenn diese Variablen innerhalb einer Funktion als globale Variablen angelegt werden sollen, muss OutputVar vor Ausführung der Anweisung als globale Variable deklariert werden. Das Gegenteil gilt innerhalb einer Funktion, in der alle Variablen als global gelten (assume-global).

GuiControlGet, OutputVar, Focus
: Liefert die ClassNN (Klassenname und Instanznummer) des Controls, das momentan den Eingabefokus hat. Das angegebene GUI-Fenster muss aktiv sein, damit eines seiner Controls den Fokus besitzen kann. Wenn es nicht aktiv ist, wird OutputVar geleert. Beispiel: GuiControlGet, focused_control, focus

GuiControlGet, OutputVar, FocusV [v1.0.43.06+]: Ähnlich wie oben bei Focus, anstelle der ClassNN wird aber der Name der dem Control zugeordneten Variablen geliefert. Wenn dem Control keine Variable zugeordnet ist, werden die ersten 63 Stellen des Inhalts oder der Aufschrift des Controls geliefert (damit wird z.B. die Notwendigkeit vermieden, jedem Button eine eigene Variable zuordnen zu müssen).

GuiControlGet, OutputVar, Enabled: Liefert 1, wenn das Control aktiviert ist, sonst 0 (deaktiviert).

GuiControlGet, OutputVar, Visible: Liefert 1, wenn das Control sichtbar ist, sonst 0 (verborgen).

GuiControlGet, OutputVar, Hwnd [v1.0.46.16+]: Liefert die HWND (window handle, ahk_id, eindeutige ID) des Controls. Die HWND eines Controls wird oft mit PostMessage, SendMessage und DllCall genutzt. Hinweis: HwndOutputVar ist normalerweise der einfachere Weg, um die HWND zu erhalten.

Anmerkungen

Um eine GUI mit einer anderen als der voreingestellten Nummer zu bearbeiten (s.u.), muss vor sub-command die Nummer der GUI gefolgt von einem Doppelpunkt eingefügt werden, wie in diesen Beispielen:

GuiControl, 2:Show, MyButton
GuiControl, 2:, MyListBox, Item1|Item2

Ein GUI-Thread ist jeder Thread, der als Folge einer Aktion in einer GUI aufgerufen wird. Das gilt auch für die Auswahl eines Eintrags der Menüzeile der GUI und den Aufruf eines G-Labels, wie z.B. durch Klick auf einen Button.

Die voreingestellte GUI-Nummer eines GUI-Threads ist die der aufrufenden GUI. Andere Threads haben als Voreinstellung die 1.

Siehe auch

Gui, GuiControl, ControlGet

Beispiele

GuiControlGet, MyEdit
GuiControlGet, CtrlContents,, MyEdit ; Wie oben, nur das nicht die voreingestellte Ausgabevariable verwendet wird.
GuiControlGet, MyCheckbox1 ; Liefert 1, wenn die CheckBox angeschaltet ist, sonst 0. GuiControlGet, MyCheckbox1,,, Text ; Liefert den Erläuterungstext der CheckBox. GuiControlGet, Pic, Pos, Static4 ; Liefert die Position und Größe in PicX, PicY, PicW und PicH