GuiControl

Führt eine Vielzahl von Änderungen an einem Steuerelement innerhalb eines GUI-Fensters durch.

GuiControl, Unterbefehl, SteuerelementID , Wert

Parameter

Unterbefehl, Wert
Diese Parameter sind voneinander abhängig und können wie unten gezeigt verwendet werden.
SteuerelementID

SteuerelementID kann der Name der zugeordneten Variable eines Steuerelements sein, sofern vorhanden (diese Methode hat Vorrang vor der im nächsten Absatz beschriebenen Methode). In der Regel ist es sinnvoll, jedem Steuerelement, auf das später mit GuiControl oder GuiControlGet zugegriffen wird, eine Variable zuzuordnen, selbst wenn dieses Steuerelement nicht eingabefähig ist (wie z.B. GroupBox oder Text).

Andernfalls geben Sie für SteuerelementID entweder die ClassNN-Bezeichnung (Klassenname und Instanznummer des Steuerelements) oder den Text des Steuerelements an, die beide mit dem internen Tool "Window Spy" ermittelt werden können. Wenn Text verwendet wird, ist das Übereinstimmungsverhalten abhängig von SetTitleMatchMode.

Hinweis: Der Dateiname eines Picture-Steuerelements (der zum Zeitpunkt seiner Erstellung angegeben wurde) kann auch als SteuerelementID verwendet werden.

[v1.1.04+]: SteuerelementID kann die HWND-Nummer (eindeutige ID) eines Steuerelements sein.

Wenn sich das Steuerelement nicht auf der Standard-GUI befindet, muss zudem der Name oder die HWND-Nummer (eindeutige ID) der GUI angegeben werden -- außer in [v1.1.20+], wenn SteuerelementID eine HWND-Nummer ist, da jede HWND-Nummer eindeutig ist. Weitere Informationen finden Sie unter Bemerkungen.

Unterbefehle

Geben Sie für Unterbefehl Folgendes an:

(Leer)

Fügt neue Inhalte in das Steuerelement ein.

GuiControl,, SteuerelementID , Wert

Lassen Sie Unterbefehl leer, um neue Inhalte via Wert in das Steuerelement einzufügen. Konkret heißt das:

Picture: Geben Sie für Wert den Dateinamen (oder Handle) des neuen Bildes an, das geladen werden soll (siehe Gui Picture, welche Dateitypen unterstützt werden). Direkt vor dem Dateinamen können beliebig viele der folgenden Optionen angegeben werden: *wN (Breite N), *hN (Höhe N) und *IconN (Symbolgruppennummer N in einer DLL- oder EXE-Datei). Das folgende Beispiel lädt das Standardsymbol aus der zweiten Symbolgruppe mit einer Breite von 100 Pixel und einer automatischen Höhe via "Seitenverhältnis beibehalten": GuiControl,, MeinBild, *icon2 *w100 *h-1 C:\Meine Anwendung.exe. Geben Sie *w0 *h0 an, um die aktuelle Breite und Höhe des Bildes zu verwenden. Wenn *w und *h weggelassen werden, wird die Größe des Bildes an die Größe des Steuerelements angepasst. Beim Laden eines Symbols aus einer ICO-Datei mit mehreren Symbolen hat die Angabe von Breite und Höhe zudem Einfluss darauf, welches Symbol geladen wird.

Hinweis: Verwenden Sie nur ein Leer- oder Tabulatorzeichen zwischen der letzten Option und dem Dateinamen selbst; alle anderen Leer- oder Tabulatorzeichen werden als Teil des Dateinamens interpretiert.

Text/Button/GroupBox/StatusBar/Link: Geben Sie für Wert den neuen Text des Steuerelements an. Da sich hierbei die Größe des Steuerelements nicht automatisch erweitert, muss so etwas wie GuiControl, Move, MeinText, W300 verwendet werden, um das Steuerelement breiter zu machen. Bei einer StatusBar wird nur der Text des ersten Segments gesetzt (verwenden Sie SB_SetText() für mehr Flexibilität).

Edit: Jedes LF-Zeichen (`n) in Wert, das kein CR-Zeichen (`r) davor hat, wird automatisch in ein CR-LF-Paar (`r`n) übersetzt, um eine korrekte Darstellung zu gewährleisten. In der Regel sollte das keine Probleme bereiten, weil Gui Submit und GuiControlGet AusgabeVar diese Übersetzung automatisch rückgängig machen, indem sie CR-LF-Paare (`r`n) mit LF-Zeichen (`n) ersetzen.

Hotkey: Geben Sie für Wert eine Tastenkombination in Form von Modifikatorsymbolen und einem Tastennamen an, die im Steuerelement angezeigt werden soll, oder lassen Sie diesen Parameter leer, um den Inhalt des Steuerelements zu löschen. Beispiele: ^!c, ^Numpad1, +Home. Es werden nur die Modifikatoren ^ (STRG), ! (ALT) und + (UMSCHALT) unterstützt. Weitere Tastennamen finden Sie in der Tastenliste.

CheckBox: Wert kann 0 für ausgeschaltet, 1 für eingeschaltet oder -1 für unbestimmt/grau sein. Andernfalls wird Wert als neuer Text bzw. neue Beschriftung des Steuerelements behandelt. Schauen Sie sich den Text-Unterbefehl weiter unten an, wie dieses Verhalten überschrieben werden kann.

Radio: Dasselbe wie CheckBox oben. Wenn allerdings das Radio-Steuerelement eingeschaltet wird und Mitglied einer Multi-Radio-Gruppe ist, werden die anderen Radio-Steuerelemente in der Gruppe automatisch ausgeschaltet. Um ein neues Radio-Steuerelement innerhalb einer Multi-Radio-Gruppe einzuschalten, wo nur eine zugeordnete Variable verfügbar ist, müssen Sie für SteuerelementID den Namen/Text des Radio-Steuerelements angeben, wenn diesem nicht genau diese Variable zugeordnet ist.

DateTime/MonthCal: Geben Sie für Wert einen Zeitstempel im YYYYMMDDHH24MISS-Format an. Geben Sie %A_Now% an, um das aktuelle Datum/Uhrzeit (heute) zu verwenden. Bei DateTime-Steuerelementen kann Wert weggelassen werden, um das Steuerelement ohne vorab ausgewähltes Datum/Uhrzeit anzuzeigen (wenn es mit dieser Option erstellt wurde). Bei MonthCal-Steuerelementen kann ein Datumsbereich angegeben werden, wenn das Steuerelement eine Mehrfachauswahl unterstützt.

UpDown/Slider/Progress: Geben Sie für Wert die neue Position des Steuerelements an. Wenn das erste Zeichen von Wert ein Pluszeichen ist, wird die Zahl als Offset von der aktuellen Position behandelt. Zum Beispiel bewirkt +10, dass die Position um 10 Pixel erhöht wird, während +-10 (plus minus zehn) bewirkt, dass die Position um 10 Pixel verringert wird. Wenn die neue Position außerhalb des gültigen Wertebereichs liegt, wird das Steuerelement auf den nächstmöglichen gültigen Wert gesetzt.

Tab/DropDownList/ComboBox/ListBox: Geben Sie für Wert eine via Vertikalstrich getrennte Liste an, um neue Listeneinträge/Tabs an das Ende der Liste des Steuerelements anzufügen. Fügen Sie einen Vertikalstrich als erstes Zeichen ein, um die Liste stattdessen zu ersetzen bzw. zu überschreiben (z.B. |Rot|Grün|Blau). Geben Sie einen einzelnen Vertikalstrich (|) an, um das Steuerelement leer zu machen. Fügen Sie zwei Vertikalstriche an, um einen Listeneintrag/Tab im Steuerelement vorab auszuwählen (z.B. Rot|Grün||Blau). Das Trennzeichen zwischen den Feldern kann mit der GUI-Option +Delimiter auf etwas anderes als den Vertikalstrich geändert werden. Zum Beispiel kann es mit Gui +Delimiter`n in ein LF-Zeichen (`n) oder mit Gui +DelimiterTab in ein Tabulatorzeichen (`t) geändert werden.

Tab-Steuerelemente: Zusätzlich zum oben beschriebenen Verhalten sind und bleiben die Untersteuerelemente eines Tabs mit ihrer ursprünglichen Tabnummer verknüpft, d.h. sie sind nie mit dem Anzeigenamen ihres Tabs verknüpft. Das Umbenennen oder Entfernen eines Tabs ändert nicht die Tabnummer, zu der die Untersteuerelemente gehören. Wenn zum Beispiel die drei Tabs Rot|Grün|Blau vorhanden sind und der zweite Tab mit GuiControl,, MeinTab, |Rot|Blau entfernt wird, werden die ursprünglich mit Grün verknüpften Untersteuerelemente mit Blau verknüpft. Aufgrund dieses Verhaltens ist es ratsam, nur die am Ende befindlichen Tabs zu entfernen. Tabs, die auf diese Weise entfernt wurden, können später wieder hinzugefügt werden, um ihnen ihre ursprünglichen Steuerelemente zurückzugeben.

ListView und TreeView: Diese Steuerelemente werden nicht unterstützt, wenn Unterbefehl leer ist. Verwenden Sie stattdessen die internen ListView- und TreeView-Funktionen.

Text

Ändert den Text bzw. die Beschriftung des Steuerelements.

GuiControl, Text, SteuerelementID , Wert

Verhält sich wie der leere Unterbefehl, außer bei:

CheckBox/Radio: Wert wird bedingungslos als neuer Text bzw. neue Beschriftung des Steuerelements behandelt, d.h. es kann auch -1, 0 oder 1 als Text angegeben werden.

DateTime: Wert wird als neues Datums-/Zeitformat behandelt, das vom Steuerelement angezeigt werden soll. Wenn Wert weggelassen wird, wird jedes benutzerdefinierte Format entfernt und das kurze Datumsformat in Kraft gesetzt.

ComboBox: Wert wird als Text behandelt, der direkt in das Eingabefeld der ComboBox eingefügt werden soll.

Move

Verschiebt das Steuerelement und/oder ändert dessen Größe.

GuiControl, Move, SteuerelementID, Optionen

Geben Sie einen oder mehrere der folgenden Optionsbuchstaben in Optionen an: X (die X-Koordinate relativ zum Clientbereich des GUI-Fensters, was der Bereich ohne Titelleiste, Menüleiste und Rahmen ist); Y (die Y-Koordinate), W (Breite), H (Höhe). (Geben Sie jede Zahl als Dezimalzahl an, nicht als Hexadezimalzahl.) Zum Beispiel:

GuiControl, Move, MeinEdit, x10 y20 w200 h100
GuiControl, Move, MeinEdit, % "x" VarX+10 "y" VarY+5 "w" VarW*2 "h" VarH*1.5 ; Erzwingt einen Ausdruck via "% ".

MoveDraw

Verschiebt das Steuerelement und/oder ändert dessen Größe und zeichnet den vom Steuerelement beanspruchten Bereich neu.

GuiControl, MoveDraw, SteuerelementID , Optionen

Schauen Sie sich den Move-Unterbefehl oben an, um mehr zu erfahren. Obwohl dieser Unterbefehl bei wiederholtem und schnellem Aufruf zu unerwünschtem Flackern führen kann, ist er in der Lage, fehlerhafte Darstellungen beim Zeichnen bestimmter Steuerelemente wie z.B. GroupBox zu verhindern. [v1.0.48.04+]: Der letzte Parameter kann weggelassen werden, um das Steuerelement ohne Verschieben oder Größenänderung neu zu zeichnen.

Focus

Fokussiert das Steuerelement.

GuiControl, Focus, SteuerelementID

Um den gewünschten Effekt zu erzielen, darf das Fenster weder minimiert noch versteckt sein.

Wenn ein Steuerelement durch eine Benutzereingabe fokussiert wird (z.B. durch Drücken der Tabulatortaste), werden unabhängig von diesem Unterbefehl zusätzliche Effekte angewendet. Einzelheiten finden Sie unter ControlFocus. AutoHotkey v2 ersetzt diesen Unterbefehl mit einer Methode, die die zusätzlichen Effekte anwendet.

Disable

Verbietet die Interaktion mit dem Steuerelement.

GuiControl, Disable, SteuerelementID

Bei Tab-Steuerelementen verbietet dieser Unterbefehl zudem die Interaktion mit den Untersteuerelementen. Direkt nach dem Wort Disable kann optional eine 0 oder 1 angegeben werden. Eine 0 bewirkt eine Umkehrung des Effekts. Zum Beispiel würden Disable und Disable%VarMitEins% die Interaktion mit dem Steuerelement verbieten, während Disable%VarMitNull% diese erlauben würde.

Enable

Erlaubt die Interaktion mit dem Steuerelement.

GuiControl, Enable, SteuerelementID

Bei Tab-Steuerelementen erlaubt dieser Unterbefehl zudem die Interaktion mit den Untersteuerelementen. Beachten Sie aber, dass jedes Untersteuerelement, das explizit mit dem Disable-Unterbefehl deaktiviert wurde, sich diese Einstellung merkt und demzufolge auch nach Reaktivierung des Tab-Steuerelements deaktiviert bleibt. Direkt nach dem Wort Enable kann optional eine 0 oder 1 angegeben werden. Eine 0 bewirkt eine Umkehrung des Effekts. Zum Beispiel würden Enable und Enable%VarMitEins% die Interaktion mit dem Steuerelement erlauben, während Enable%VarMitNull% diese verbieten würde.

Hide

Versteckt das Steuerelement.

GuiControl, Hide, SteuerelementID

Bei Tab-Steuerelementen versteckt dieser Unterbefehl zudem alle Untersteuerelemente. Mit dem Disable-Unterbefehl kann zusätzlich der Tastaturkurzbefehl eines Steuerelements (unterstrichene Buchstabe) deaktiviert werden. Direkt nach dem Wort Hide kann optional eine 0 oder 1 angegeben werden. Eine 0 bewirkt eine Umkehrung des Effekts. Zum Beispiel würden Hide und Hide%VarMitEins% das Steuerelement verstecken, während Hide%VarMitNull% es sichtbar machen würde.

Show

Macht das Steuerelement sichtbar.

GuiControl, Show, SteuerelementID

Bei Tab-Steuerelementen macht dieser Unterbefehl zudem alle Untersteuerelemente sichtbar. Direkt nach dem Wort Show kann optional eine 0 oder 1 angegeben werden. Eine 0 bewirkt eine Umkehrung des Effekts. Zum Beispiel würden Show und Show%VarMitEins% das Steuerelement sichtbar machen, während Show%VarMitNull% es verstecken würde.

Delete

Noch nicht implementiert: Dieser Unterbefehl ist noch nicht verfügbar. Verwenden Sie alternativ die Unterbefehle Hide und/oder Disable (siehe oben) oder zerstören Sie das gesamte Fenster mit Gui Destroy und erstellen Sie es neu.

Choose

Setzt die Auswahl in einem ListBox-, DropDownList-, ComboBox- oder Tab-Steuerelement auf den N-ten Listeneintrag/Tab.

GuiControl, Choose, SteuerelementID, N

Geben Sie für N die Positionsnummer eines Listeneintrags/Tabs an; also 1 für den ersten, 2 für den zweiten usw. Wenn N kein Integer ist, wird automatisch der unten beschriebene ChooseString-Unterbefehl verwendet. [v1.1.06+]: Wenn N 0 ist, wird die aktuelle Auswahl der ListBox, DropDownList oder ComboBox entfernt.

Im Gegensatz zu Control Choose wird dieser Unterbefehl kein g-Label auslösen, das dem Steuerelement zugeordnet ist, es sei denn, N beginnt mit einem Vertikalstrich (selbst dann wird das g-Label nur ausgelöst, wenn die neue Auswahl von der alten abweicht, zumindest bei Tab-Steuerelementen). Zum Beispiel: GuiControl, Choose, MeineListBox, |3.

Soll zusätzlich ein Abschlussereignis ausgelöst werden (ein Doppelklick im Falle von ListBox), fügen Sie am Anfang statt einem zwei Vertikalstriche ein (Tab-Steuerelemente unterstützen das nicht).

Um alle Listeneinträge in einer Mehrfachauswahl-ListBox aus- oder abzuwählen, gehen Sie wie folgt vor:

Gui +LastFound  ; Verhindert, dass unten FensterTitel angegeben werden muss.
PostMessage, 0x0185, 1, -1, ListBox1  ; Alle Listeneinträge auswählen. 0x0185 ist LB_SETSEL.
PostMessage, 0x0185, 0, -1, ListBox1  ; Alle Listeneinträge abwählen.
GuiControl, Choose, ListBox1, 0  ; Alle Listeneinträge abwählen, benötigt [v1.1.06+].

ChooseString

Setzt die Auswahl in einem ListBox-, DropDownList-, ComboBox- oder Tab-Steuerelement auf den ersten Listeneintrag/Tab, der mit Zeichenkette beginnt.

GuiControl, ChooseString, SteuerelementID, Zeichenkette

Die Suche erfolgt nicht Groß-/Kleinschreibung-sensitiv. Wenn z.B. ein Steuerelement den Listeneintrag/Tab "UNIX-Text" enthält, genügt die Angabe von GuiControl, ChooseString, SteuerelementID, unix, um diesen Listeneintrag/Tab auszuwählen. Die Präfixe "|" und "||" werden ebenfalls unterstützt (schauen Sie sich den Choose-Unterbefehl oben an, um mehr zu erfahren).

Font

Ändert Schriftart, Schriftgröße, Schriftstil und/oder Schriftfarbe des Steuerelements.

GuiControl, Font, SteuerelementID

Zum Beispiel:

Gui, Font, s18 cRed Bold, Verdana  ; Falls gewünscht, können Sie eine Zeile wie diese verwenden, um eine neue Standardschrift für das Fenster zu setzen.
GuiControl, Font, MeinEdit  ; Wendet die obige Schrift auf ein Steuerelement an.

Optionen

Fügt steuerelementspezifische oder allgemeine Optionen und Styles hinzu oder entfernt diese.

GuiControl, +/-Option1 +/-Option2 ..., SteuerelementID , Wert

Das folgende Beispiel aktiviert die AltSubmit-Option und entfernt das g-Label des Steuerelements:

GuiControl, +AltSubmit -g, MeineListBox

Das nächste Beispiel macht die OK-Schaltfläche zur neuen Standardschaltfläche:

GuiControl, +Default, OK

Obwohl auch Styles und erweiterte Styles erkannt werden, können einige von ihnen nicht angewendet oder entfernt werden, nachdem ein Steuerelement erstellt wurde. ErrorLevel wird auf 0 gesetzt, wenn mindestens eine der angegebenen Änderungen erfolgreich angewendet wurde. Andernfalls wird es auf 1 gesetzt, um zu kennzeichnen, dass keine der Änderungen angewendet werden konnte. Eine erfolgreich angewendete Änderung kann immer noch vom Steuerelement selbst ignoriert werden.

[v1.1.20+]: Um ein Funktionsobjekt zum Behandeln von Ereignissen des Steuerelements zu setzen, muss Wert eine einzelne Variablenreferenz sein, wie in den folgenden zwei Beispielen gezeigt. Andere Ausdrücke, die Objekte zurückgeben, werden zurzeit nicht unterstützt.

GuiControl +g, SteuerelementID, %FunkObj%
GuiControl +g, SteuerelementID, % FunkObj

Fehlerbehandlung

[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird auf 1 gesetzt, wenn das angegebene Fenster/Steuerelement nicht existiert oder ein anderes Problem die Ausführung des Befehls verhindert hat. Andernfalls wird es auf 0 gesetzt.

Bemerkungen

Um mit einem anderen Fenster als dem Standardfenster zu arbeiten, fügen Sie dessen Namen oder Nummer (oder in [v1.1.03+] dessen HWND), gefolgt von einem Doppelpunkt, vor dem Unterbefehl ein. Zum Beispiel:

GuiControl, MeineGui:Show, MeinButton
GuiControl, MeineGui:, MeineListBox, Element1|Element2

Dies ist auch erforderlich, wenn SteuerelementID die zugeordnete Variable eines Steuerelements ist, da jede Variable für mehrere GUI-Fenster verwendet werden kann. In [v1.1.20+] kann der GUI-Name weggelassen werden, wenn SteuerelementID die HWND-Nummer (eindeutige ID) eines Steuerelements ist.

Ein GUI-Thread ist ein Thread, der durch eine GUI-Aktion gestartet wurde. Eine GUI-Aktion ist z.B. das Auswählen eines Menüpunkts oder das Auslösen eines g-Labels (z.B. durch Drücken einer Schaltfläche).

Der Standardfenstername eines GUI-Threads ist der Name des Fensters, das diesen Thread gestartet hat. Nicht-GUI-Threads verwenden standardmäßig 1.

Gui, GuiControlGet, Control

Beispiele

Ersetzt die aktuelle Liste mit einer neuen Liste.

GuiControl,, MeineListBox, |Rot|Grün|Blau

Fügt neuen Text in ein Edit-Steuerelement ein.

GuiControl,, MeinEdit, Neue Textzeile 1.`nNeue Textzeile 2.

Schaltet ein Radio-Steuerelement ein, während alle anderen in der Gruppe ausgeschaltet werden.

GuiControl,, MeinRadio2, 1

Verschiebt die OK-Schaltfläche auf eine neue Position.

GuiControl, Move, OK, x100 y200

Setzt den Tastaturfokus auf ein Steuerelement, dessen Variable oder Text "Nachname" ist.

GuiControl, Focus, Nachname