Gui

Erstellt und verwaltet Fenster und Steuerelemente. Solche Fenster können zur Dateneingabe oder als individuelle Benutzerschnittstellen verwendet werden.

Gui, Unterbefehl , Wert1, Wert2, Wert3

Die Parameter Unterbefehl, Wert1, Wert2 und Wert3 sind voneinander abhängig und können wie folgt verwendet werden.

Inhaltsverzeichnis

Unterbefehle

Geben Sie für Unterbefehl Folgendes an:

New [v1.1.04+]

Erstellt ein neues Fenster und macht es zum Standardfenster für den aktuellen Thread.

Gui, New , Optionen, Titel
Gui, GuiName:New , Optionen, Titel

Wenn GuiName angegeben ist, wird eine neue GUI erstellt, wobei eine existierende GUI mit diesem Namen zerstört wird. Andernfalls wird eine neue GUI erstellt, die weder benannt noch nummeriert ist.

Optionen kann beliebig viele Optionen enthalten, die vom Haupt-GUI-Befehl unterstützt werden.

Titel kann weggelassen werden, um den Dateinamen des Skripts zu verwenden.

Nachteile und Vorbehalte:

Vorteile:

Wenn kein Name angegeben ist, gilt folgendes:

Hinweis: Früher vor [v1.1.08] setzte dieser Unterbefehl kein Standard-GUI-Fenster, wenn ein Name angegeben war.

Add

Fügt ein Steuerelement zum GUI-Fenster hinzu (und erstellt vorher das GUI-Fenster, falls nötig).

Gui, Add, Steuerelement , Optionen, Text

Steuerelement kann folgendes sein: ActiveX, Button, CheckBox, ComboBox, Custom, DateTime, DropDownList (oder DDL), Edit, GroupBox, Hotkey, Link, ListBox, ListView, MonthCal, Picture (oder Pic), Progress, Radio, Slider, StatusBar, Tab, Tab2, Tab3, Text, TreeView, UpDown

Optionen ist eine Zeichenkette aus beliebig vielen Optionen und Styles, die jeweils durch mindestens ein Leer- oder Tabulatorzeichen voneinander getrennt sind. Die Optionen werden im Abschnitt Optionen und Styles für ein Steuerelement beschrieben.

Zum Beispiel:

Gui, Add, Text,, Bitte tragen Sie Ihren Namen ein:
Gui, Add, Edit, vName
Gui, Show

Show

Sofern in Optionen nicht anders angegeben, bewirkt dieser Unterbefehl, dass das Fenster sichtbar gemacht, entminimiert (falls nötig), aktiviert und dessen Fenstertitel gesetzt wird.

Gui, Show , Optionen, Titel

Wenn Titel weggelassen wird, wird der zuvor gesetzte Titel verwendet (wenn es keinen gibt, wird der Dateiname des Skripts verwendet).

Die unteren Optionen X, Y, W und H können weggelassen werden, um die zuvor gesetzte Größe und Position des Fensters zu verwenden. Wenn es keine zuvor gesetzte Position gibt, wird das Fenster automatisch auf dem Bildschirm zentriert, je nachdem, ob die unten erwähnten Optionen X und Y fehlen. Wenn es keine zuvor gesetzte Größe gibt, wird die Fenstergröße automatisch an die Größe und Position aller darin enthaltenen Steuerelemente angepasst.

Für Optionen können beliebig viele der folgenden Optionen angegeben werden, die jeweils durch mindestens ein Leer- oder Tabulatorzeichen voneinander getrennt sind (jede Zahl muss dezimal sein, nicht hexadezimal):

Wn: Geben Sie für n die Breite (in Pixel) des Clientbereichs an (das ist der Fensterbereich ohne Rahmen, Titelleiste und Menüleiste).

Hn: Geben Sie für n die Höhe (in Pixel) des Clientbereichs an.

Xn: Geben Sie für n die X-Position des Fensters auf dem Bildschirm an (in Pixel). Position 0 ist die erste linke sichtbare Pixelspalte auf dem Bildschirm.

Yn: Geben Sie für n die Y-Position des Fensters auf dem Bildschirm an (in Pixel). Position 0 ist die erste obere sichtbare Pixelzeile auf dem Bildschirm.

Center: Zentriert das Fenster horizontal und vertikal auf dem Bildschirm.

xCenter: Zentriert das Fenster horizontal auf dem Bildschirm. Zum Beispiel: Gui, Show, xCenter y0.

yCenter: Zentriert das Fenster vertikal auf dem Bildschirm.

AutoSize: Passt die Fenstergröße automatisch an die Größe und Position aller sichtbaren Steuerelemente im Fenster an. Diese Option ist besonders nützlich, wenn neue Steuerelemente hinzugefügt werden, oder wenn bereits vorhandene Steuerelemente größer/kleiner, sichtbar oder unsichtbar gemacht werden. Zum Beispiel: Gui, Show, AutoSize Center.

Minimize: Minimiert das Fenster und aktiviert das darunter liegende Fenster.

Maximize: Maximiert und aktiviert das Fenster.

Restore: Entminimiert oder entmaximiert das Fenster, falls nötig. Zusätzlich wird das Fenster sichtbar gemacht und aktiviert, falls nötig.

NoActivate: Entminimiert oder entmaximiert das Fenster, falls nötig. Zusätzlich wird das Fenster sichtbar gemacht, ohne es zu aktivieren.

NA: Macht das Fenster sichtbar, ohne es zu aktivieren. Wenn das Fenster minimiert ist, bleibt es minimiert, kann aber in der Z-Rangfolge aufsteigen (die aktuelle Rangfolge kann im Alt-Tab-Fenster eingesehen werden). Wenn das Fenster zuvor versteckt war, bewirkt diese Option, dass es über dem aktiven Fenster erscheint, obwohl das aktive Fenster nicht deaktiviert ist.

Hide: Versteckt das Fenster und aktiviert das darunter liegende Fenster. Funktionsgemäß ist diese Option identisch mit Gui Cancel, ermöglicht es aber, ein verstecktes Fenster zu verschieben, größer/kleiner zu machen oder neu zu betiteln, ohne es sichtbar zu machen. Zum Beispiel: Gui, Show, Hide x55 y66 w300 h200, Neuer Titel.

Submit

Speichert den Inhalt der Steuerelemente in ihre zugeordneten Variablen (falls vorhanden) und versteckt das Fenster (mit NoHide kann das Verstecken verhindert werden).

Gui, Submit , NoHide

Steuerelemente, die mehrere Ausgabefelder erzeugen, z.B. eine Mehrfachauswahl-ListBox, verwenden das aktuelle Trennzeichen des Fensters, um diese voneinander zu trennen. Wenn das Fenster nicht existiert (z.B. weil es via Gui Destroy zerstört wurde), ist dieser Unterbefehl wirkungslos.

Cancel / Hide

Versteckt das Fenster, ohne den Inhalt der Steuerelemente in ihre zugeordneten Variablen zu speichern.

Gui, Cancel
Gui, Hide

Wenn das Fenster nicht existiert (z.B. weil es via Gui Destroy zerstört wurde), ist dieser Unterbefehl wirkungslos.

Destroy

Entfernt das Fenster (falls vorhanden) und alle darin enthaltenen Steuerelemente und gibt die zugehörigen Speicher- und Systemressourcen frei.

Gui, Destroy

Wenn das Fenster später neu erstellt wird, beginnen alle Fenstereigenschaften wie Farbe und Schrift wieder mit ihren Standardwerten (als hätte das Fenster nie existiert). Alle GUI-Fenster werden automatisch zerstört, sobald das Skript beendet wird.

Font

Bestimmt Schriftart, Schriftgröße, Schriftstil und/oder Schriftfarbe für danach erstellte Steuerelemente.

Gui, Font , Optionen, SchriftName

Zum Beispiel:

Gui, Font, s10, Verdana  ; Schriftart Verdana mit Größe 10.

Die letzten beiden Parameter können weggelassen werden, um die Standard-GUI-Schriftart des Systems, inklusive Größe und Farbe, wiederherzustellen.

SchriftName ist der Name einer beliebigen Schrift, z.B. eine aus der Schriftentabelle. Wenn SchriftName weggelassen wird oder im System nicht vorhanden ist, wird die zuvor gesetzte Schriftart verwendet (wenn es keine gibt, wird die Standard-GUI-Schriftart des Systems verwendet). Dieses Verhalten ist nützlich, um ein GUI-Fenster, das für mehrere Systeme gedacht ist, eine ähnliche Schrift verwenden zu lassen, selbst wenn in einigen dieser Systeme die bevorzugte Schrift fehlt. Das folgende Beispiel bewirkt, dass Verdana gegenüber Arial bevorzugt wird, welches wiederum gegenüber MS Sans Serif bevorzugt wird:

Gui, Font,, MS Sans Serif
Gui, Font,, Arial
Gui, Font,, Verdana  ; Bevorzugte Schrift.

Wenn der Optionen-Parameter leer ist oder weggelassen wird, werden die Attribute der zuvor gesetzten Schrift verwendet. Andernfalls geben Sie stattdessen einen oder mehrere der folgenden Optionsbuchstaben an, die jeweils durch mindestens ein Leer- oder Tabulatorzeichen voneinander getrennt sind:

C: Der Name einer Farbe (siehe Farbentabelle) oder ein RGB-Wert, oder das Wort Default, um die Standardfarbe des Systems wiederherzustellen (üblicherweise schwarz). Beispielwerte: cRed, cFFFFAA, cDefault. Hinweis: Button- und StatusBar-Steuerelemente können nicht mit einer benutzerdefinierten Farbe versehen werden. Alternativ kann auch die C-Option verwendet werden, um die Schriftfarbe für einzelne Steuerelemente bei ihrer Erstellung zu bestimmen. Zum Beispiel: Gui, Add, Text, cRed, Mein Text.

S: Größe (in Punkten). Zum Beispiel: s12 (Dezimalzahl, nicht Hexadezimalzahl).

W: Breite (Dicke). Eine Zahl zwischen 1 und 1000 (400 ist normal und 700 ist fett). Zum Beispiel: w600 (Dezimalzahl, nicht Hexadezimalzahl).

Die folgenden Wörter werden ebenfalls unterstützt: bold, italic, strike, underline und norm (übersetzt: fett, kursiv, durchgestrichen, unterstrichen und normal). Norm stellt die normale Breite/Dicke der Schrift wieder her und schaltet italic, strike und underline aus (Farbe und Größe bleiben unverändert). Es ist möglich, Norm zu verwenden, um alle Attribute auszuschalten und dann selektiv andere einzuschalten. Zum Beispiel bewirkt norm italic, dass die Schrift normalisiert und anschließend kursiv gemacht wird.

Mehrere Optionen müssen mit einem Leerzeichen voneinander getrennt werden. Zum Beispiel: cBlue s12 bold.

Bei mehreren GUI-Fenstern ist zu beachten, dass jedes Fenster seine eigenen gespeicherten Schrifteinstellungen abruft, wenn neue Steuerelemente erstellt werden.

Das Betriebssystem stellt außerdem Standarddialogfenster bereit, die der Benutzer zum Auswählen einer Schriftart, einer Farbe oder eines Symbols verwenden kann. Solche Dialogfenster können via DllCall() angezeigt werden, wie auf GitHub gezeigt.

Q: [AHK_L 19+]: Textdarstellungsqualität. Zum Beispiel: q3. Nach Q muss eine Nummer aus der folgenden Tabelle angegeben werden:

Nummer Windows-Konstante Beschreibung
0 DEFAULT_QUALITY Die Darstellung der Schrift spielt keine Rolle.
1 DRAFT_QUALITY Die exakte Übereinstimmung mit logischen Schriftattributen (fett, kursiv usw.) ist wichtiger als die Zeichenqualität der Schrift.
2 PROOF_QUALITY Die Zeichenqualität der Schrift ist wichtiger als die exakte Übereinstimmung mit logischen Schriftattributen (fett, kursiv usw.).
3 NONANTIALIASED_QUALITY Die Schrift wird nie antialiasiert (geglättet).
4 ANTIALIASED_QUALITY Die Schrift wird antialiasiert (geglättet), wenn die Schrift dies unterstützt und nicht zu klein oder zu groß ist.
5 CLEARTYPE_QUALITY Windows XP und höher: Die Schrift wird (wenn möglich) mit der ClearType-Antialiasing-Methode gerendert.

Weitere Informationen zur Bedeutung dieser Werte finden Sie unter Microsoft Docs: CreateFont.

Standardmäßig wird die höchste Qualitätseinstellung verwendet. Daher wird dieses Feature eher dazu verwendet, die Kantenglättung auszuschalten, um den Text in bestimmten Fällen besser lesbar zu machen.

Color

Bestimmt die Hintergrundfarbe des Fensters und/oder aller darin enthaltenen Steuerelemente.

Gui, Color , FensterFarbe, SteuerelementFarbe

FensterFarbe wird als Hintergrund für das GUI-Fenster selbst verwendet. SteuerelementFarbe wird auf alle aktuellen und zukünftigen Steuerelemente im Fenster angewendet, die benutzerdefinierte Farben unterstützen. SteuerelementFarbe wirkt sich nur einmalig auf ListView- und TreeView-Steuerelemente aus; nachträgliche Änderungen der SteuerelementFarbe haben keine Auswirkung auf diese Steuerelemente. In solchen Fällen kann GuiControl +BackgroundFF9977, MeineListView verwendet werden, um die Farbe explizit zu ändern.

Beide Parameter können leer gelassen werden, um die entsprechende Farbe beizubehalten. Andernfalls geben Sie einen der 16 primären HTML-Farbnamen oder einen 6-stelligen RGB-Farbwert (mit oder ohne 0x-Präfix) an, oder das Wort Default, um die Standardfarbe wiederherzustellen. Beispielwerte: Silver, FFFFAA, 0xFFFFAA, Default.

Ein Fenster verwendet als Hintergrundfarbe standardmäßig die Standardschaltflächenfarbe des Systems, während ein Steuerelement als Hintergrundfarbe standardmäßig die Standardfensterfarbe des Systems verwendet (üblicherweise weiß).

Die Farbe der Menüleiste und aller darin enthaltenen Untermenüs kann wie folgt geändert werden: Menu, MeineMenüleiste, Color, White.

Mit WinSet TransColor kann der Hintergrund transparent gemacht werden. Wenn Sie dies jedoch tun, ohne zuvor eine benutzerdefinierte Fensterfarbe via Gui Color zugewiesen zu haben, werden Button-Steuerelemente ebenfalls transparent. Um das zu verhindern, weisen Sie zuerst eine benutzerdefinierte Farbe zu und machen Sie diese dann transparent. Zum Beispiel:

Gui, Color, EEAA99
Gui +LastFound  ; Macht das GUI-Fenster zum zuletzt gefundenen Fenster für die Zeile darunter.
WinSet, TransColor, EEAA99

Die folgende Zeile kann hinzugefügt werden, um den Rahmen und die Titelleiste eines Fensters zu entfernen, das bereits transparent gemacht wurde:

Gui -Caption  ; Oder Gui, GuiName:-Caption, falls es nicht das Standardfenster ist.

Weiter unten finden Sie ein Beispiel für eine Bildschirmanzeige (OSD), das zeigt, wie diese Methode in der Praxis verwendet werden kann.

Margin

Bestimmt die Anzahl der Pixel, die auf der linken/rechten und oberen/unteren Seite des Fensters freigelassen werden, wenn Steuerelemente aufgrund fehlender X- oder Y-Koordinate automatisch positioniert werden.

Gui, Margin , X, Y

Diese Abstände werden auch verwendet, um den vertikalen und horizontalen Abstand zwischen automatisch positionierten Steuerelementen zu bestimmen. Außerdem werden diese Abstände zur Berechnung der Fenstergröße herangezogen, wenn Gui Show zum ersten Mal verwendet wird (wenn keine explizite Größe angegeben ist).

Gui, Margin beeinflusst nur das Standardfenster, während Gui, Name:Margin nur Einfluss auf das benannte Fenster hat. Wenn dieser Unterbefehl nicht verwendet wird, werden die Ränder des Fensters beim Hinzufügen des ersten Steuerelements standardmäßig mit Abständen versehen, die proportional zur Größe der aktuell ausgewählten Schrift sind (0.75 mal die Schrifthöhe für Oben & Unten, 1.25 mal die Schriftbreite für Links & Rechts).

Es ist möglich, die Abstände zu ändern, während Steuerelemente hinzugefügt werden. Allerdings gelten solche Änderungen nur für danach hinzugefügte Steuerelemente, nicht für bereits vorhandene. Wenn X oder Y weggelassen wird, bleibt der entsprechende Abstand unverändert.

Stattet das Fenster mit einer Menüleiste aus.

Gui, Menu , MenüName

Verwenden Sie hierfür den Menu-Befehl, um ein gewöhnliches Menü zu erstellen. Zum Beispiel:

Menu, DateiMenü, Add, Ö&ffnen`tCtrl+F, MenüDateiÖffnen  ; Siehe untere Bemerkungen zu Ctrl+F.
Menu, DateiMenü, Add, &Beenden, MenuHandler
Menu, HilfeMenü, Add, Inf&o, MenuHandler
Menu, MeineMenüleiste, Add, &Datei, :DateiMenü  ; Die zwei oben erstellten Untermenüs hinzufügen.
Menu, MeineMenüleiste, Add, &?, :HilfeMenü
Gui, Menu, MeineMenüleiste

In der ersten Zeile oben sehen Sie Ctrl+F, das nach Ö&ffnen folgt (mit einem Tabulatorzeichen dazwischen). Dabei handelt es sich um ein Tastaturkurzbefehl, den der Benutzer drücken kann, um die Aktion des Menüpunkts auszuführen, ohne dass der Benutzer erst dorthin navigieren muss. [v1.1.04+]: Tastaturkurzbefehle mit den regulären Modifikatortasten Ctrl, Alt und Shift werden automatisch als Keyboard Accelerator für die GUI registriert. Keyboard Accelerators ohne Modifikatoren sind Groß-/Kleinschreibung-sensitiv und können nur mit ungewöhnlichen Mitteln wie IME oder Alt+NNNN ausgelöst werden.

Wenn eine bestimmte Tastenkombination nicht automatisch funktioniert, können Sie ggf. einen kontextabhängigen Hotkey verwenden. Beachten Sie aber, dass solche Hotkeys üblicherweise nicht durch Send ausgelöst werden können und dass sie im Gegensatz zu einem typischen Keyboard Accelerator andere Skripte stören können.

Mit Gui Menu (also ohne den letzten Parameter) können Sie die aktuelle Menüleiste aus dem Fenster entfernen.

Ein Menü, das bereits als Menüleiste fungiert, sollte nicht als Kontextmenü oder Untermenü verwendet werden. Der Grund dafür ist, dass Menüleisten intern ein anderes Format benötigen. (Diese Einschränkung gilt jedoch nur für die Menüleiste selbst, nicht für ihre Untermenüs.) Um dieses Problem zu umgehen, erstellen Sie zweimal das gleiche Menü und weisen Sie eines davon der Menüleiste zu.

Das Anwenden von destruktiven Menu-Unterbefehlen wie Delete und DeleteAll auf eine Menüleiste (und in einigen Fällen auf die darin enthaltenen Untermenüs) ist wirkungslos und bewirkt, dass ein Fehlerdialogfenster angezeigt wird (sofern UseErrorLevel nicht aktiv ist). Befolgen Sie die folgenden Schritte, um diese Art von Änderungen vornehmen zu können: 1) Entfernen Sie die Menüleiste mit Gui Menu (also ohne den MenüName-Parameter); 2) machen Sie die gewünschten Änderungen; 3) fügen Sie die Menüleiste mit Gui, Menu, MeineMenüleiste wieder hinzu.

Minimize / Maximize / Restore

Macht das Fenster sichtbar (falls nötig) und führt die entsprechende Operation durch.

Gui, Minimize
Gui, Maximize
Gui, Restore

Wenn das Fenster nicht existiert (z.B. weil es via Gui Destroy zerstört wurde), ist dieser Unterbefehl wirkungslos.

Flash

Lässt die Taskleistenschaltfläche des Fensters einmal aufblinken.

Gui, Flash , Off

Dazu wird die Farbe der Titelleiste und/oder der Taskleistenschaltfläche (falls vorhanden) invertiert. Geben Sie das optionale Wort Off an, um die Originalfarben der Titelleiste und Taskleistenschaltfläche wiederherzustellen (das tatsächliche Verhalten variiert aber je nach OS-Version). Das folgende Beispiel lässt das Fenster dreimal aufblinken, da jedes Paar von "Gui Flash" die Farben des Fensters invertiert und wiederherstellt:

Loop 6
{
    Gui Flash
    Sleep 500  ; Es reagiert sehr empfindlich auf diesen Wert; Änderungen können zu unerwarteten Ergebnissen führen.
}

Default

Ändert den Standard-GUI-Fensternamen des aktuellen Threads.

Gui, GuiName:Default

Dies wird immer dann verwendet, wenn für GuiControl, GuiControlGet und den Gui-Befehl selbst kein Fenstername angegeben wurde. Das folgende Beispiel ändert den Standardfensternamen in "MeineGui": Gui MeineGui:Default. Weitere Informationen zum Standardfenster finden Sie unter Standardfenster eines Threads.

[v1.1.03+]: GuiName kann die HWND-Nummer (eindeutige ID) eines GUI-Fensters des Skripts sein. Wenn das Fenster einen Namen hat, wird dieser Name zum Standardfensternamen, der auch nach dem Zerstören des Fensters erhalten bleibt. Wenn das Fenster keinen Namen hat, wird der Standardfenstername beim Zerstören des Fensters auf 1 zurückgesetzt.

[v1.1.23+]: Die interne Variable A_DefaultGui enthält den Namen oder die Nummer der Standard-GUI.

+/-Option1 +/-Option2 ...

Setzt verschiedene Optionen und Styles für das Aussehen und Verhalten des Fensters. Weitere Informationen finden Sie unter Optionen und Styles für ein Fenster (siehe unten).

Optionen und Styles für ein Fenster

Nach dem GUI-Befehl können Optionen und Styles angegeben werden, die jeweils durch mindestens ein Leer- oder Tabulatorzeichen voneinander getrennt sind.

Gui, +/-Option1 +/-Option2 ...

Aus Performanzgründen ist es besser, alle Optionen auf einer Zeile zu setzen, bevor das Fenster erstellt wird (also bevor andere Unterbefehle wie z.B. Gui Add verwendet werden).

Der Effekt des Befehls ist kumulativ (summierend), d.h. dieser Befehl ändert nur die explizit angegebenen Optionen, alle anderen bleiben unverändert.

Geben Sie ein Pluszeichen an, um die Option hinzuzufügen, oder ein Minuszeichen, um sie zu entfernen. Zum Beispiel:

Gui +Resize -MaximizeBox  ; Ändert die Einstellungen des Standard-GUI-Fensters.
Gui MeineGui:+Resize -MaximizeBox  ; Ändert die Einstellungen der GUI namens MeineGui.

AlwaysOnTop: Gibt dem Fenster die Eigenschaft, immer im Vordergrund zu sein, also immer vor allen anderen Fenstern sichtbar zu sein, was den gleichen Effekt hat wie WinSet AlwaysOnTop.

Border: Stattet das Fenster mit einem dünnen Rahmen aus. Diese Option wird selten verwendet.

Caption (standardmäßig vorhanden): Stattet das Fenster mit einer Titelleiste und einem dicken Rahmen aus. Beachten Sie, dass die Titelleiste eines Fensters erst entfernt werden sollte, nachdem eine Farbe mit WinSet TransColor transparent gemacht wurde.

Delimiter: Gibt an, dass das Fenster nicht den Vertikalstrich (|), sondern ein anderes Zeichen als Trennzeichen verwenden soll, wenn Steuerelementinhalte via Gui Add hinzugefügt, via GuiControl modifiziert, oder via Gui Submit oder GuiControlGet abgerufen werden. Geben Sie das gewünschte Trennzeichen direkt nach dem Wort Delimiter an. Zum Beispiel würde Gui +Delimiter`n ein LF-Zeichen verwenden, das sich besonders gut für Fortsetzungsbereiche eignet. Entsprechend kann mit Gui +Delimiter| das Standardtrennzeichen wiederhergestellt werden. Um ein Leer- oder Tabulatorzeichen zu verwenden, geben Sie Gui +DelimiterSpace oder Gui +DelimiterTab an. Die Änderung des Trennzeichens wirkt sich auf alle vorhandenen und nachfolgenden Threads aus, die mit diesem bestimmten Fenster arbeiten.

Disabled: Deaktiviert das Fenster, um den Benutzer daran zu hindern, mit den darin enthaltenen Steuerelementen zu interagieren. Diese Option wird oft auf ein Fenster mit Unterfenstern angewendet (siehe Owner).

DPIScale [v1.1.11+]: Verwenden Sie Gui -DPIScale, um die standardmäßig aktive DPI-Skalierung zu deaktivieren. Wenn die DPI-Skalierung aktiviert ist, werden Koordinaten und Größen, die an die Gui-Unterbefehle und verwandte Variablen übergeben oder von diesen abgerufen werden, automatisch gemäß dem Bildschirm-DPI-Wert skaliert. Bei einem DPI-Wert von z.B. 144 (150 %) würde Gui Show, w100 die GUI 150 (100 * 1.5) Pixel breit machen, während eine Änderung der Fensterbreite auf 200 Pixel via Maus oder WinMove dazu führen würde, dass A_GuiWidth 133 (200 // 1.5) zurückgibt. A_ScreenDPI enthält den aktuellen DPI-Wert des Systems.

Die DPI-Skalierung betrifft nur Gui-Unterbefehle und verwandte Variablen, d.h. Koordinaten aus anderen Quellen wie ControlGetPos oder WinGetPos werden nicht funktionieren. Es gibt eine Reihe von Möglichkeiten, damit umzugehen:

HwndAusgabeVar [v1.1.04+]: Diese Option speichert das Fensterhandle (HWND) der GUI in AusgabeVar. Zum Beispiel: Gui +HwndMeineGuiHwnd. Innerhalb einer Funktion wird MeineGuiHwnd als dynamische Variable behandelt. Die HWND-Nummer (eindeutige ID) einer GUI wird oft in Verbindung mit PostMessage, SendMessage und DllCall() verwendet. Außerdem kann diese Nummer direkt als ahk_id-Fenstertitel oder anstelle eines GUI-Namens verwendet werden, z.B. Gui %MeineGuiHwnd%:Destroy.

Label [v1.0.44.09+]: Bestimmt benutzerdefinierte Namen für die speziellen Labels des Fensters. Zum Beispiel bewirkt Gui MeineGui:+LabelMeineGui_On, dass das Fenster nicht MeineGuiGuiClose und MeineGuiGuiSize, sondern MeineGui_OnClose und MeineGui_OnSize als Labels (sofern vorhanden) verwendet. Mit anderen Worten, die Zeichenkette "MeineGuiGui" wird in allen speziellen Labelnamen durch "MeineGui_On" ersetzt. Diese Option kann auch verwendet werden, um mehreren Fenstern den gleichen Satz von Labels zuzuweisen (in diesem Fall kann das Skript A_Gui verwenden, um herauszufinden, welches Fenster die Subroutine gestartet hat).

LastFound: Macht das Fenster zum zuletzt gefundenen Fenster (geschieht automatisch in einem GUI-Thread), damit Befehle wie WinSet mit diesem Fenster arbeiten können, sogar wenn es versteckt ist (d.h. DetectHiddenWindows ist nicht notwendig). Diese Option ist besonders nützlich, um die Eigenschaften des Fensters vor dem Anzeigen zu ändern. Zum Beispiel:

Gui +LastFound
WinSet, TransColor, %UnsichtbareFarbe% 150
Gui Show

LastFoundExist [v1.0.43.09+]: Im Gegensatz zu den anderen Optionen wird LastFoundExist nur erkannt, wenn keine anderen Optionen auf der gleichen Zeile vorhanden sind. +LastFoundExist ist dasselbe wie +LastFound, mit dem Unterschied, dass das Fenster nicht erstellt wird, wenn es noch nicht existiert. Der Hauptzweck dieser Option ist es, herauszufinden, ob ein bestimmtes GUI-Fenster existiert. Zum Beispiel:

Gui MeineGui:+LastFoundExist
if WinExist()
    MsgBox GUI "MeineGui" existiert bereits.

MaximizeBox: Aktiviert die Titelleistenschaltfläche zum Maximieren des Fensters. Diese Option ist in Resize inbegriffen.

MinimizeBox (standardmäßig vorhanden): Aktiviert die Titelleistenschaltfläche zum Minimieren des Fensters.

MinSize und MaxSize [v1.0.44.13+]: Bestimmt die minimale und/oder maximale Fenstergröße, z.B. wenn der Benutzer an den Rändern des Fensters zieht, um es kleiner/größer zu machen. Geben Sie +MinSize und/oder +MaxSize an (also ohne Suffix), um die aktuelle Fenstergröße als Grenzwert zu verwenden (wenn das Fenster keine aktuelle Größe hat, wird die gesetzte Größe des ersten Gui Show verwendet). Alternativ können Sie auch die Breite, ein X und dann die Höhe anfügen, z.B. Gui +Resize +MinSize640x480. Diese Dimensionen (in Pixel) spezifizieren die Größe des Clientbereichs des Fensters (das ist der Bereich ohne Rahmen, Titelleiste und Menüleiste). Geben Sie jede Zahl als Dezimalzahl an, nicht als Hexadezimalzahl.

Eine der Dimensionen kann weggelassen werden, um sie unverändert zu lassen (z.B. +MinSize640x oder +MinSizex480). Außerdem kann Min/MaxSize mehrfach angegeben werden, um für eine Dimension die aktuelle Fenstergröße und für die andere eine explizite Größe zu verwenden. Zum Beispiel würde +MinSize +MinSize640x die aktuelle Fenstergröße für die Höhe und 640 Pixel für die Breite verwenden.

Wenn MinSize und MaxSize nie verwendet werden, werden die Standardwerte des Betriebssystems verwendet. Mit Gui -MinSize -MaxSize können die Standardwerte wiederhergestellt werden.

Hinweis: Das Fenster muss +Resize haben, damit der Benutzer es kleiner/größer machen kann.

OwnDialogs: Gui +OwnDialogs bewirkt, dass alle nachfolgenden MsgBox-, InputBox-, FileSelectFile- oder FileSelectFolder-Dialogfenster im aktuellen Thread (z.B. ButtonOK-Subroutine) dem aktuellen Fenster untergeordnet werden. Solche Dialogfenster werden modal, d.h. der Benutzer kann erst mit dem GUI-Fenster interagieren, wenn er das Dialogfenster schließt. ToolTip-, Progress- und SplashImage-Fenster können hingegen nicht modal gemacht werden, selbst wenn sie einem Fenster untergeordnet werden; diese werden immer über ihrem übergeordneten Fenster angezeigt. Untergeordnete Dialogfenster werden automatisch zerstört, sobald ihr übergeordnetes Fenster zerstört wird.

Normalerweise ist es nicht notwendig, diese Einstellung wieder auszuschalten, da sie keinen Einfluss auf andere Threads hat. Wenn ein Thread jedoch sowohl untergeordnete als auch nicht-untergeordnete Dialogfenster anzeigen muss, verwenden Sie Gui -OwnDialogs, um diese Einstellung auszuschalten.

Wenn kein Fensternamepräfix angegeben ist - z.B. wird Gui +OwnDialogs statt Gui MeineGui:+OwnDialogs verwendet - werden die Dialogfenster dem Standardfenster des Threads untergeordnet.

Owner: Mit +Owner kann das Fenster einem anderen Fenster untergeordnet werden. Untergeordnete Fenster haben standardmäßig keine eigene Taskleistenschaltfläche und werden, sofern sichtbar, immer über ihrem übergeordneten Fenster angezeigt. Sie werden automatisch zerstört, sobald ihr übergeordnetes Fenster zerstört wird. +Owner muss nach der Erstellung des übergeordneten Fensters verwendet werden, aber in [v1.1.05+] kann diese Option vor und nach der Erstellung des untergeordneten Fensters verwendet werden. Es gibt zwei Möglichkeiten, wie +Owner verwendet werden kann:

Gui, MeineGui:+OwnerAndereGui  ; MeineGui zum Unterfenster von AndereGui machen.
Gui, MeineGui:+Owner  ; MeineGui zum Unterfenster des Hauptfensters des Skripts machen, um eine Taskleistenschaltfläche zu verhindern.

[v1.1.03+]: Direkt nach +Owner kann der Name oder die Nummer einer bereits existierenden GUI oder die HWND-Nummer (eindeutige ID) eines beliebigen Top-Level-Fensters angegeben werden.

Hinweis zur Kompatibilität: In [v1.1.03+] entfernt +Owner den WS_CHILD-Style und setzt den WS_POPUP-Style. Um das übergeordnete Fenster einer GUI zu setzen, müssen Skripte entweder die +Parent-Option verwenden, oder die entsprechenden Styles nach der +Owner-Option überschreiben.

Mit Gui +Disabled kann die Interaktion mit dem übergeordneten Fenster verboten werden, während eines seiner untergeordneten Fenster angezeigt wird. Später (also wenn der Zeitpunkt gekommen ist, das untergeordnete Fenster via Cancel/Destroy zu schließen) kann die Interaktion mit dem übergeordneten Fenster via Gui -Disabled wieder erlaubt werden. Machen Sie das vor dem Cancel/Destroy, damit das übergeordnete Fenster automatisch reaktiviert wird.

Parent [v1.1.03+]: Geben Sie +Parent und direkt danach den Namen oder die Nummer einer bereits existierenden GUI oder die HWND-Nummer (eindeutige ID) eines Fensters oder Steuerelements an, die/das diesem Fenster übergeordnet werden soll. Mit -Parent kann die GUI wieder in ein Top-Level-Fenster umgewandelt werden. Diese Option kann auch nach der Erstellung des Fensters verwendet werden. Bekannte Einschränkungen:

Resize: Ermöglicht das Ändern der Fenstergröße und aktiviert die Titelleistenschaltfläche zum Maximieren des Fensters. Mit +Resize -MaximizeBox kann die Aktivierung der Schaltfläche zum Maximieren des Fensters verhindert werden.

SysMenu (standardmäßig vorhanden): Geben Sie -SysMenu (minus SysMenu) an, um das Systemmenü und Symbol in der oberen linken Ecke des Fensters zu entfernen. Die Titelleistenschaltflächen zum Minimieren, Maximieren und Schließen des Fensters werden ebenfalls entfernt.

Theme: Geben Sie -Theme an, um alle danach erstellten Steuerelemente im klassischen Design darzustellen (nur ab Windows XP). Mit +Theme kann das neue Design wieder eingeschaltet werden.

Hinweis: Die Theme-Option funktioniert nicht, wenn das Betriebssystem älter als Windows XP ist oder wenn Windows XP selbst das klassische Design aktiv hat.

Um diese Option nur für ein bestimmtes Steuerelement zu ändern, fügen Sie +Theme oder -Theme in dessen Optionen ein, während es erstellt wird.

ToolWindow: Stattet das Fenster mit einer kleineren Titelleiste aus und versteckt dessen Taskleistenschaltfläche. Diese Option versteckt immer die Schaltflächen zum Maximieren und Minimieren des Fensters, egal ob die Styles WS_MAXIMIZEBOX und WS_MINIMIZEBOX vorhanden sind.

(Namenloser Style): Geben Sie ein Plus- oder Minuszeichen und direkt danach eine dezimale oder hexadezimale Zahl an, um einen Style hinzuzufügen oder zu entfernen.

(Namenloser erweiterter Style): Geben Sie ein Plus- oder Minuszeichen und direkt danach ein E und eine dezimale oder hexadezimale Zahl an, um einen erweiterten Style hinzuzufügen oder zu entfernen. Zum Beispiel würde +E0x40000 den WS_EX_APPWINDOW-Style hinzufügen, der eine Taskleistenschaltfläche für ein Fenster bereitstellt, das sonst keine hätte. Weitere erweiterte Styles, die nur selten verwendet werden und daher hier nicht aufgeführt sind, finden Sie unter Extended Window Styles | Microsoft Docs.

Optionen und Styles für ein Steuerelement

Bei der Verwendung von Gui Add können beliebig viele Optionen und Styles angegeben werden, die jeweils durch mindestens ein Leer- oder Tabulatorzeichen voneinander getrennt sind. Dieser Abschnitt ist in folgende Unterabschnitte unterteilt:

Position und Größe von Steuerelementen ändern

Hinweis: Für einfache Layouts sind die folgenden Optionen in der Regel ausreichend. Für komplexere Layouts können jedoch Tools wie der SmartGUI Creator von Rajat hilfreicher sein, da diese die visuelle Gestaltung eines GUI-Fensters nach dem Motto "what you see is what you get" ermöglichen. Der SmartGUI Creator ist kostenlos und kann unter www.autohotkey.com/docs/SmartGUI/ heruntergeladen werden.

Wenn Dimensionen und/oder Koordinaten in Optionen weggelassen werden, wird das Steuerelement relativ zum vorherigen Steuerelement positioniert und/oder je nach Inhalt und Typ automatisch dimensioniert.

Folgende Optionen werden unterstützt:

Rn: Textzeilen (wobei n eine beliebige Zahl ist, sogar eine Floating-Point-Zahl wie r2.5). R ist oft besser als H (Höhe). Wenn R und H gleichzeitig vorhanden sind, wird R bevorzugt. Bei einer GroupBox ist das die Anzahl der Steuerelemente, für die Platz in der Box reserviert werden soll. Bei einer DropDownList, ComboBox oder ListBox ist das die Anzahl der Listeneinträge, die der Listenbereich des Steuerelements maximal anzeigen soll (in Windows XP oder höher ist es ratsam, eine DropDownList oder ComboBox ohne R und H zu erstellen, damit die aufklappbare Liste von der verfügbaren Höhe des Desktops profitieren kann). Bei allen anderen Steuerelementen ist R die Anzahl der Textzeilen, die maximal angezeigt werden sollen.

Wn: Breite (wobei n eine beliebige Zahl in Pixel ist). Wenn weggelassen, wird die Breite einiger Steuerelemente automatisch anhand ihres Inhalts berechnet; Tabs sind standardmäßig das 30-fache der aktuellen Schriftgröße plus das 3-fache des horizontalen Abstands breit; vertikale ProgressBars standardmäßig das 2-fache der aktuellen Schriftgröße breit; und horizontale ProgressBars, horizontale Sliders, DropDownLists, ComboBoxes, ListBoxes, GroupBoxes, Edits und Hotkeys standardmäßig das 15-fache der aktuellen Schriftgröße breit (außer GroupBoxes, die das 18-fache breit sind, um Platz für Abstände zu schaffen).

Hn: Höhe (wobei n eine beliebige Zahl in Pixel ist). Wenn sowohl H als auch R weggelassen werden, sind DropDownLists, ComboBoxes, ListBoxes und leere mehrzeilige Edits standardmäßig 3 Zeilen hoch; GroupBoxes standardmäßig 2 Zeilen hoch; vertikale Sliders und vertikale ProgressBars standardmäßig 5 Zeilen hoch; horizontale Sliders standardmäßig 30 Pixel hoch (außer wenn eine Dicke angegeben wurde); horizontale ProgressBars standardmäßig das 2-fache der aktuellen Schriftgröße hoch; Hotkeys standardmäßig 1 Zeile hoch; und Tabs standardmäßig 10 Zeilen hoch. Alle anderen Steuerelemente erhalten automatisch eine Höhe, die auf ihrem Inhalt basiert. Beachten Sie bei DropDownLists und ComboBoxes, dass H die kombinierte Höhe des immer sichtbaren Teils und des Listenteils ist (bei einem zu niedrigen Wert wird immer mindestens ein Listeneintrag angezeigt). Außerdem ist es bei allen Arten von Steuerelementen in der Regel besser, die Anzahl der Zeilen mit der R- statt H-Option anzugeben, um zu vermeiden, dass ein Steuerelement unvollständige bzw. nur teilweise sichtbare Textzeilen anzeigt.

WP±n, HP±n (wobei n eine beliebige Zahl in Pixel ist) können verwendet werden, um die Breite und/oder Höhe eines Steuerelements genau auf die Breite oder Höhe des zuvor hinzugefügten Steuerelements zu setzen, die optional um eine beliebige Zahl erhöht oder verringert werden kann. Zum Beispiel würde wp die Breite eines Steuerelements auf die Breite des vorherigen Steuerelements setzen, und wp-50 auf die Breite des vorherigen Steuerelements, aber um 50 verringert.

Xn, Yn: X-Position, Y-Position (wobei n eine beliebige Zahl ist): x0 y0 beispielsweise positioniert das Steuerelement in die obere linke Ecke des Clientbereichs des Fensters (das ist der Bereich ohne Rahmen, Titelleiste und Menüleiste).

X+n, Y+n (wobei n eine beliebige Zahl in Pixel ist): Es ist möglich, ein optionales Pluszeichen einzufügen, um ein Steuerelement relativ zum rechten bzw. unteren Rand des zuvor hinzugefügten Steuerelements zu positionieren. y+10 beispielsweise positioniert das Steuerelement unterhalb des zuvor hinzugefügten Steuerelements, die genau 10 Pixel voneinander entfernt sind. x+10 hingegen positioniert das Steuerelement 10 Pixel entfernt auf die rechte Seite des zuvor hinzugefügten Steuerelements. Da negative Zahlen wie x-10 für die absolute Positionierung reserviert sind, müssen negative Offsets mit einem Pluszeichen beginnen. Zum Beispiel: x+-10.

[v1.1.16+]: Für X+ und Y+ kann der Buchstabe M als Ersatz für den aktuellen Abstand (Margin) des Fensters verwendet werden. x+m beispielsweise verwendet den rechten Rand des zuvor hinzugefügten Steuerelements und fügt den aktuellen Standardabstand hinzu. xp y+m positioniert ein Steuerelement unterhalb des zuvor hinzugefügten Steuerelements, während eine relative X-Koordinate allein (mit XP oder X+) standardmäßig yp impliziert.

XP±n, YP±n (wobei n eine beliebige Zahl ist) können verwendet werden, um Steuerelemente relativ zur linken oberen Ecke des zuvor hinzugefügten Steuerelements zu positionieren, was oft nützlich ist, um Steuerelemente mit einer GroupBox zu umschließen.

XM±n, YM±n (wobei n eine beliebige Zahl in Pixel ist) können verwendet werden, um ein Steuerelement an den ganz linken bzw. obersten Abstand (Margin) des Fensters zu positionieren (nach diesen Optionen kann ein Plus-/Minuszeichen und eine Zahl folgen).

XS±n und YS±n (wobei n eine beliebige Zahl in Pixel ist): Diese haben einen ähnlichen Effekt wie XM und YM, beziehen sich aber auf Koordinaten, die von einem zuvor hinzugefügten Steuerelement stammen, dessen Optionen das Wort Section enthält (das erste Steuerelement eines Fensters beginnt immer eine neue Sektion, egal ob dessen Optionen dieses Wort enthält). Zum Beispiel:

Gui, Add, Edit, w600  ; Ein relativ breites Eingabefeld ganz oben im Fenster hinzufügen.
Gui, Add, Text, Section, Vorname:  ; Position dieses Steuerelements speichern und eine neue Sektion beginnen.
Gui, Add, Text,, Nachname:
Gui, Add, Edit, ys  ; Eine neue Spalte innerhalb dieser Sektion beginnen.
Gui, Add, Edit
Gui, Show

Nach XS und YS kann optional ein Plus-/Minuszeichen und eine Zahl folgen. Außerdem ist es möglich, sowohl das Wort Section als auch XS/YS in den Optionen eines Steuerelements anzugeben, um zu bewirken, dass das Steuerelement die alte Sektion verwendet, aber eine neue Sektion für nachfolgende Steuerelemente etabliert.

Wenn X und/oder Y weggelassen werden, passt sich ein GUI-Layout automatisch an künftige Änderungen bzgl. der Größe von Steuerelementen oder der Schrift an. Wenn Sie hingegen für jedes Steuerelement eine absolute Position angeben, müssen Sie möglicherweise die Position aller Steuerelemente unterhalb und/oder auf der rechten Seite des Steuerelements, dessen Größe geändert wurde, manuell verschieben.

Wenn sowohl X als auch Y weggelassen werden, wird das Steuerelement unterhalb des zuvor hinzugefügten Steuerelements positioniert, wobei der Standardabstand verwendet wird. Aufeinanderfolgende Text- oder Link-Steuerelemente werden mit zusätzlichen vertikalen Abständen versehen, damit sie besser ausgerichtet sind, wenn danach eine rechts befindliche Spalte mit Steuerelementen wie Edit, DDL usw. hinzugefügt wird. Um nur den vertikalen Standardabstand zu verwenden, geben Sie y+m oder einen beliebigen Wert für X an.

Wenn nur eine Komponente weggelassen wird, hängt ihr Standardwert davon ab, mit welcher Option die andere Komponente angegeben wurde:

X angegebenStandard für Y
Xn oder XMUnterhalb aller vorherigen Steuerelemente (maximale Y-Ausdehnung plus Margin).
XSUnterhalb aller vorherigen Steuerelemente seit der letzten Verwendung der Section-Option.
X+n oder XPDasselbe wie der obere Rand des vorherigen Steuerelements (YP).
Y angegebenStandard für X
Yn oder YMRechts von allen vorherigen Steuerelementen (maximale X-Ausdehnung plus Margin).
YSRechts von allen vorherigen Steuerelementen seit der letzten Verwendung der Section-Option.
Y+n oder YPDasselbe wie der linke Rand des vorherigen Steuerelements (XP).

Benutzereingaben speichern und verarbeiten

V: Variable. Verknüpft eine Variable mit einem Steuerelement. Geben Sie direkt nach dem Buchstaben V den Namen einer globalen Variable an (oder einer lokalen ByRef-Variable, die auf eine globale Variable verweist, oder in [v1.0.46.01+] einer statischen Variable). Zum Beispiel bewirkt vMeinEdit, dass der Inhalt des Steuerelements jedes Mal in die Variable MeinEdit gespeichert wird, wenn Gui Submit verwendet wird. Wenn ein Steuerelement nicht eingabefähig ist (z.B. ein Text- oder GroupBox-Steuerelement), kann die Zuordnung einer Variable dennoch hilfreich sein, da der Variablenname als eindeutiger Identifikator für das Steuerelement dient und somit im Zusammenhang mit dem SteuerelementID-Parameter von GuiControl und GuiControlGet sowie mit A_GuiControl verwendet werden kann.

Hinweis: Gui Submit ändert weder die zugeordneten Variablen von nicht-eingabefähigen Steuerelementen (z.B. Text und GroupBox) noch die von Steuerelementen, wo entsprechend dokumentiert (z.B. ListView und TreeView).

G: Gosub (g-Label). Startet automatisch eine Subroutine oder Funktion, wenn der Benutzer ein Steuerelement anklickt oder ändert. Geben Sie direkt nach dem Buchstaben G den Namen eines Labels an, das ausgeführt werden soll. gCancel kann verwendet werden, um ein indirektes Gui Cancel auszulösen (wenn aber bereits ein Label namens "Cancel" im Skript existiert, wird dieses stattdessen ausgeführt). Die Subroutine kann die folgenden internen Variablen verwenden: A_Gui, A_GuiControl, A_GuiEvent, A_EventInfo und A_ThisLabel.

[v1.1.20+]: Es kann auch der Name einer Funktion angegeben werden, sofern dieser Name nicht als Label existiert. Alternativ kann der GuiControl-Befehl verwendet werden, um ein Funktionsobjekt mit einem Steuerelement zu verknüpfen. Die Funktion kann optional die folgenden Parameter akzeptieren (wobei gElementEreignis die Funktion gesetzt hat):

ElementEreignis(ElementHwnd, GuiEreignis, EreignisInfo, ErrLevel:="")

Die Bedeutung der Parameter hängt vom Typ des Steuerelements ab. Hinweis: Wenn der vierte Parameter ohne Standardwert deklariert wird, kann die Funktion nur von Ereignissen aufgerufen werden, die vier Parameter bereitstellen.

Häufig verwendete Optionen und Styles für Steuerelemente

Hinweis: Vorzeichenlose Optionen werden standardmäßig hinzugefügt. Zum Beispiel ist Wrap dasselbe wie +Wrap. Mit -Wrap kann es hingegen wieder entfernt werden.

AltSubmit: Verwendet eine alternative Submit-Methode. Bei einer DropDownList, ComboBox oder ListBox bewirkt diese Option, dass Gui Submit nicht den Text, sondern die Position des ausgewählten Listeneintrags speichert. Wenn kein Listeneintrag ausgewählt ist, wird bei einer ComboBox weiterhin der Text des Eingabefeldes gespeichert, während bei einer DropDownList oder ListBox weiterhin die zugeordnete Ausgabevariable leer gemacht wird. Hinweis: AltSubmit beeinflusst auch das Verhalten von GuiControlGet beim Abrufen des Inhalts eines solchen Steuerelements.

C: Textfarbe (funktioniert nicht bei Schaltflächen und Statusleisten). Geben Sie den Buchstaben C an, unmittelbar gefolgt von einem Farbnamen (siehe Farbentabelle) oder RGB-Wert (mit oder ohne 0x-Präfix). Beispiele: cRed, cFF2211, c0xFF2211, cDefault.

Choose: Wählt vorab ein einzelnes Element in einem ComboBox-, DateTime-, DropDownList-, ListBox- oder Tab-Steuerelement aus. Geben Sie das Wort Choose an, unmittelbar gefolgt von der Nummer eines Elements. Zum Beispiel: Choose2

Disabled: Stellt das Steuerelement in einem deaktivierten Zustand dar und bewirkt, dass es weder fokussiert noch geändert werden kann. Um die Interaktion mit diesem Steuerelement später wieder zu erlauben, verwenden Sie GuiControl Enable. Hinweis: Um ein Edit-Steuerelement stattdessen in den schreibgeschützten Zustand zu versetzen, fügen Sie ReadOnly in dessen Optionen ein. Direkt nach dem Wort Disabled kann optional eine 0 oder 1 angegeben werden, um den Startzustand zu bestimmen (0 für aktiviert, 1 für deaktiviert). Mit anderen Worten, Disabled ist dasselbe wie Disabled%VarMitEins%.

Hidden: Versteckt zunächst das Steuerelement. Mit GuiControl Show kann es später wieder sichtbar gemacht werden. Direkt nach dem Wort Hidden kann optional eine 0 oder 1 angegeben werden, um den Startzustand zu bestimmen (0 für sichtbar, 1 für versteckt). Mit anderen Worten, Hidden ist dasselbe wie Hidden%VarMitEins%.

Left: Macht den Text linksbündig innerhalb der verfügbaren Breite des Steuerelements. Diese Option beeinflusst die folgenden Steuerelemente: Text, Edit, Button, CheckBox, Radio, UpDown, Slider, Tab, Tab2, GroupBox, DateTime.

Right: Macht den Text rechtsbündig innerhalb der verfügbaren Breite des Steuerelements. Bei CheckBox- und Radio-Steuerelementen bewirkt diese Option außerdem, dass das Auswahlfeld auf der rechten statt linken Seite des Steuerelements positioniert wird. Diese Option beeinflusst die folgenden Steuerelemente: Text, Edit, Button, CheckBox, Radio, UpDown, Slider, Tab, Tab2, GroupBox, DateTime, Link.

Center: Zentriert den Text des Steuerelements horizontal. Diese Option beeinflusst die folgenden Steuerelemente: Text, Edit, Button, CheckBox, Radio, Slider, GroupBox.

Section: Beginnt eine neue Sektion und speichert die Positionsdaten des Steuerelements, um sie später mit den oben beschriebenen Positionierungsoptionen XS und YS zu verwenden.

Tabstop: Geben Sie -Tabstop (minus Tabstop) für ein eingabefähiges Steuerelement an, das übersprungen werden soll, wenn der Benutzer Tab zum Navigieren drückt.

Wrap: Aktiviert den automatischen Zeilenumbruch im Text des Steuerelements. Da der automatische Zeilenumbruch standardmäßig bei fast allen Arten von Steuerelementen aktiv ist, wird in der Regel -Wrap verwendet, um diese Option zu deaktivieren.

VScroll: Stattet das Steuerelement mit einem vertikalen Scrollbalken aus, sofern möglich.

HScroll: Stattet das Steuerelement mit einem horizontalen Scrollbalken aus, sofern möglich. Der Rest dieses Absatzes gilt nur für die ListBox. Die horizontale Scrollbreite ist standardmäßig die 3-fache Breite der Listbox. Um eine andere Scrollbreite zu bestimmen, geben Sie direkt nach dem Wort HScroll eine Zahl an. Zum Beispiel ermöglicht HScroll500 einen scrollbaren Bereich von 500 Pixeln innerhalb der ListBox. Wenn die angegebene Scrollbreite allerdings kleiner als die Breite der ListBox ist, wird kein Scrollbalken angezeigt (obwohl das bloße Vorhandensein von HScroll es überhaupt erst möglich macht, den horizontalen Scrollbalken später via GuiControl, +HScroll500, MeinScrollbalken hinzuzufügen).

Selten verwendete Optionen und Styles für Steuerelemente

BackgroundTrans: Verwendet einen transparenten Hintergrund, der jedes Steuerelement, das sich hinter einem Text-, Picture- oder GroupBox-Steuerelement befindet, durchscheinen lässt. Zum Beispiel würde ein transparentes Text-Steuerelement, das über einem Picture-Steuerelement angezeigt wird, die Illusion erzeugen, als gehöre der Text zum Bild. Mit GuiControl, +Background kann diese Option später wieder entfernt werden. Weitere Informationen zu transparenten Bildern finden Sie im AltSubmit-Abschnitt des Picture-Steuerelements. Bekannte Einschränkung: Es ist möglich, dass BackgroundTrans nicht ordnungsgemäß mit Steuerelementen innerhalb eines Tab-Steuerelements funktioniert, das eine ListView enthält.

Background: Geben Sie -Background (minus Background) an, um ein Steuerelement dessen Standardhintergrundfarbe und nicht die via Gui Color definierte Hintergrundfarbe verwenden zu lassen. Diese Option wird häufig verwendet, um ein Tab-Steuerelement mit dessen Standardfarbe statt Fensterfarbe zu versehen. Mit GuiControl, +Background kann diese Option später wieder entfernt werden.

Border: Umrahmt das Steuerelement mit einer dünnen Linie. Die meisten Steuerelemente haben bereits einen typspezifischen Rahmen und benötigen daher diese Option nicht. Wird ein bereits existierendes Steuerelement mit einem Rahmen versehen, kann es notwendig sein, die Breite und Höhe des Steuerelements um 1 Pixel zu vergrößern, um eine korrekte Darstellung zu gewährleisten.

HwndAusgabeVar [v1.0.46.01+]: Speichert das Fensterhandle (HWND) des neuen Steuerelements in AusgabeVar, wenn diese Option mit Gui Add verwendet wird. Zum Beispiel: Gui, Add, Edit, vMeinEdit HwndMeinEditHwnd. Wird diese Option innerhalb einer Funktion verwendet, wird AusgabeVar als dynamische Variable behandelt. Die HWND-Nummer (eindeutige ID) eines Steuerelements wird oft in Verbindung mit PostMessage, SendMessage und DllCall() verwendet. Außerdem kann diese Nummer direkt als ahk_id-Fenstertitel (das auch mit versteckten Steuerelementen funktioniert, selbst wenn DetectHiddenWindows ausgeschaltet ist) oder in [v1.1.04+] bei GuiControl und GuiControlGet als SteuerelementID-Parameter verwendet werden. Die HWND-Nummer eines nicht-untergeordneten Fensters kann via Gui MeineGui:+HwndAusgabeVar abgerufen werden.

Theme: Mit dieser Option kann die aktuelle Design-Einstellung des Fensters für das neue Steuerelement überschrieben werden. Bei bereits existierenden Steuerelementen hat diese Option keinen Effekt; allerdings kann sich das in einer zukünftigen Version noch ändern. Weitere Informationen finden Sie unter Gui +/-Theme.

(Namenloser Style): Geben Sie ein Plus- oder Minuszeichen und direkt danach eine dezimale oder hexadezimale Zahl an, um einen Style hinzuzufügen oder zu entfernen. Wenn das Vorzeichen weggelassen wird, wird der Style standardmäßig hinzugefügt.

(Namenloser erweiterter Style): Geben Sie ein Plus- oder Minuszeichen und direkt danach ein E und eine dezimale oder hexadezimale Zahl an, um einen erweiterten Style hinzuzufügen oder zu entfernen. Wenn das Vorzeichen weggelassen wird, wird der Style standardmäßig hinzugefügt. Zum Beispiel würde E0x200 den WS_EX_CLIENTEDGE-Style hinzufügen, der Steuerelemente wie z.B. Picture mit einem abgesenkten Rahmen ausstattet. Weitere erweiterte Styles, die nur selten verwendet werden und daher hier nicht aufgeführt sind, finden Sie unter www.microsoft.com mit Suchbegriffen wie WS_EX_CLIENTEDGE.

Fensterereignisse

Die folgenden Labels (Subroutinen) werden automatisch einem GUI-Fenster zugeordnet, wenn sie im Skript verwendet werden:

[v1.1.20+]: Wenn ein Label für ein bestimmtes Ereignis nicht existiert, kann stattdessen eine Funktion über diesen Namen aufgerufen werden. Die Funktion kann optional die HWND-Nummer (eindeutige ID) der GUI als ersten Parameter akzeptieren. Einige Ereignisse stellen noch mehr Parameter bereit.

Um auf die Ereignisse eines anderen Fensters anstelle des Fensters mit der Nummer 1 zuzugreifen, muss der Name oder die Nummer des Fensters (falls vorhanden) als Präfix für die oben genannten speziellen Labels verwendet werden; z.B. sind 2GuiEscape und 2GuiClose die Standardlabels für das Fenster Nummer 2, und MeineGuiGuiEscape und MeineGuiGuiClose die Standardlabels für das Fenster MeineGui. Mit Gui +Label kann ein benutzerdefiniertes Präfix definiert werden.

GuiClose

Wird gestartet, wenn das Fenster mit einer der folgenden Methoden geschlossen wird: Drücken der X-Schaltfläche in der Titelleiste, Auswählen des Systemmenüpunkts "Schließen" oder Schließen via WinClose. Wenn dieses Label fehlt, wird das Fenster beim Schließen nur versteckt, was den gleichen Effekt hat wie Gui Cancel. Die am häufigsten verwendete Aktion für GuiClose ist ExitApp. Zum Beispiel:

GuiClose:
ExitApp

[v1.1.20+]: Wenn GuiClose eine Funktion ist, wird die GUI standardmäßig versteckt. Um das zu verhindern, muss die Funktion via Return einen Integer ungleich 0 zurückgeben. Zum Beispiel:

GuiClose(GuiHwnd) {  ; Dieser Parameter muss nicht deklariert werden.
    MsgBox 4,, Wollen Sie die GUI wirklich verstecken?
    IfMsgBox No
        return true  ; true = 1
}

GuiEscape

Wird gestartet, wenn der Benutzer Esc drückt, während das GUI-Fenster aktiv ist. Wenn dieses Label fehlt, hat das Drücken von Esc keinen Effekt. Bekannte Einschränkung: Wenn die Interaktion mit dem ersten Steuerelement im Fenster verboten ist (möglicherweise abhängig vom Typ des Steuerelements), wird das GuiEscape-Label nicht gestartet. Es gibt eventuell noch andere Faktoren, die diesen Effekt hervorrufen.

GuiSize

Wird gestartet, wenn das Fenster kleiner/größer gemacht, minimiert, maximiert oder wiederhergestellt wird. Die internen Variablen A_GuiWidth und A_GuiHeight enthalten die neue Breite und Höhe des Clientbereichs des Fensters (das ist der Bereich ohne Rahmen, Titelleiste und Menüleiste). Zusätzlich enthält sowohl A_EventInfo als auch ErrorLevel eine der folgenden Zahlen:

Ein Skript kann GuiSize verwenden, um Steuerelemente neu zu positionieren und größer/kleiner zu machen, wenn der Benutzer die Größe des Fensters ändert. Um diesen Vorgang zu vereinfachen, können Sie AutoXYWH() von tmplinshi und toralf verwenden.

Beim Ändern der Fenstergröße (auch via Skript) kann es vorkommen, dass GuiSize nicht sofort aufgerufen wird. Wie jedes Fensterereignis wird GuiSize erst aufgerufen, wenn der aktuelle Thread unterbrechbar wird. Gehen Sie wie folgt vor, um sicherzustellen, dass GuiSize beim Ändern der Fenstergröße sofort aufgerufen wird:

Critical Off  ; Selbst wenn Critical On nie verwendet wurde.
Sleep -1

[v1.1.22.05+]: Gui Show macht automatisch ein Sleep -1, demzufolge muss in diesem Fall kein Sleep aufgerufen werden.

[v1.1.20+]: Wenn GuiSize eine Funktion ist, akzeptiert sie folgende Parameter:

GuiSize(GuiHwnd, EreignisInfo, Breite, Höhe)

GuiContextMenu

Wird gestartet, wenn der Benutzer mit der rechten Maustaste irgendwo im Fenster klickt (außer Titelleiste und Menüleiste). Das Ereignis wird auch gestartet, wenn der Benutzer Menü oder Umschalt+F10 drückt. Im Gegensatz zu den meisten anderen GUI-Labels können mehrere GuiContextMenu-Threads zur selben Zeit aktiv sein. GuiContextMenu kann die folgenden internen Variablen verwenden:

  1. A_GuiControl enthält den Text oder Variablennamen des Steuerelements, auf das sich das Ereignis bezieht (leer, wenn nicht).
  2. A_EventInfo: Bei einer ListBox, ListView oder TreeView gibt A_EventInfo an, auf welchem Listeneintrag, welcher Zeile oder welchem Element der Versuch unternommen wurde, das Kontextmenü zu öffnen:
  3. A_GuiX und A_GuiY enthalten die X- bzw. Y-Koordinate der Position, auf der das Kontextmenü angezeigt werden soll (z.B. Menu, MeinKontext, Show, %A_GuiX%, %A_GuiY%). Die Koordinaten sind relativ zur linken oberen Ecke des Fensters.
  4. A_GuiEvent enthält das Wort RightClick, wenn der Benutzer einen Rechtsklick gemacht hat, oder das Wort Normal, wenn das Kontextmenü via Menü oder Umschalt+F10 aufgerufen wurde.

Hinweis: Da Edit und MonthCal über ein eigenes Kontextmenü verfügen, kann in solchen Steuerelementen kein GuiContextMenu-Ereignis via Rechtsklick gestartet werden.

[v1.1.20+]: Wenn GuiContextMenu eine Funktion ist, akzeptiert sie folgende Parameter:

GuiContextMenu(GuiHwnd, ElementHwnd, EreignisInfo, IstRechtsklick, X, Y)

ElementHwnd ist leer, wenn das Ereignis nicht von einem Steuerelement stammt. IstRechtsklick ist 1 (true), wenn A_GuiEvent das Wort RightClick enthält.

GuiDropFiles

Wird gestartet, wenn Dateien/Ordner während eines Ziehen-und-Ablegen-Vorgangs auf das Fenster abgelegt werden (wenn das Label aber bereits läuft, werden Ablege-Ereignisse ignoriert). GuiDropFiles kann die folgenden internen Variablen verwenden:

  1. A_GuiControl enthält den Text oder Variablennamen des Steuerelements, auf dem die Dateien abgelegt wurden (leer, wenn nicht).
  2. A_EventInfo und ErrorLevel enthalten die Anzahl der abgelegten Dateien.
  3. A_GuiX und A_GuiY enthalten die X- bzw. Y-Koordinate der Position, auf der die Dateien abgelegt wurden (relativ zur oberen linken Ecke des Fensters).
  4. A_GuiEvent enthält die vollständigen Pfadnamen aller abgelegten Dateien, die alle außer dem letzten mit einem LF-Zeichen (`n) enden.

Mit einer parsenden Schleife können einzelne Dateien wie folgt extrahiert werden:

; BEISPIEL #1:
Loop, Parse, A_GuiEvent, `n
{
    MsgBox, 4,, Datei Nr. %A_Index% ist:`n%A_LoopField%.`n`nWeiter?
    IfMsgBox, No, break
}

; BEISPIEL #2: Um nur die erste Datei zu extrahieren, gehen Sie wie folgt vor:
Loop, Parse, A_GuiEvent, `n
{
    ErsteDatei := A_LoopField
    break
}

; BEISPIEL #3: Um die Dateien alphabetisch zu durchlaufen, gehen Sie wie folgt vor:
DateiListe := A_GuiEvent
Sort, DateiListe
Loop, Parse, DateiListe, `n
    MsgBox Datei Nr. %A_Index% ist:`n%A_LoopField%.

Um das Ziehen-und-Ablegen-Feature bei einem Fenster vorübergehend zu deaktivieren, entfernen Sie den WS_EX_ACCEPTFILES-Style via Gui -E0x10. Mit Gui +E0x10 kann es später wieder aktiviert werden.

[v1.1.20+]: Wenn GuiDropFiles eine Funktion ist, akzeptiert sie die im nächsten Beispiel gezeigten Parameter. ElementHwnd ist leer, wenn Dateien auf die GUI selbst abgelegt wurden. DateiArray ist ein Array (Objekt) mit Dateinamen, mit dem z.B. via DateiArray[1] die erste Datei abgerufen oder via DateiArray.MaxIndex() die Anzahl der Dateien zurückgegeben werden kann. Mit einer For-Schleife können die Dateien einzeln durchgegangen werden:

GuiDropFiles(GuiHwnd, DateiArray, ElementHwnd, X, Y) {
    for i, Datei in DateiArray
        MsgBox Datei %i% ist:`n%Datei%
}

Andere Ereignisse

Andere Arten von GUI-Ereignissen können via OnMessage() erkannt und verarbeitet werden. Zum Beispiel kann ein Skript jedes Mal eine kontextabhängige Hilfe via Tooltip anzeigen, wenn der Benutzer den Mauszeiger über bestimmte Steuerelemente im Fenster bewegt. Siehe dazu das GUI-Tooltip-Beispiel.

Mehrere GUI-Fenster erstellen

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:

Gui, MeineGui:Add, Text,, Text für das Über-Fenster.
Gui, MeineGui:Show

Gui MeineGui:Default kann verwendet werden, um das obige Präfix "MeineGui:" zu vermeiden. Außerdem kann das Präfix in einem GUI-Thread weggelassen werden, das mit demselben Fenster arbeitet, das diesen Thread gestartet hat.

[v1.1.03+]: GUI-Namen müssen den Richtlinien zum Erstellen von Variablennamen entsprechen. Jede Nummer größer als 99 oder länger als zwei Zeichen (z.B. 0x01) wird automatisch als HWND-Nummer (eindeutige ID) einer GUI behandelt. Wenn diese GUI nicht existiert, wird der Befehl fehlschlagen. Die Anzahl der Fenster, die erstellt werden können, wird nur durch die verfügbaren Systemressourcen begrenzt.

[v1.1.04+]: Mit Gui, New können beliebig viele namenlose GUI-Fenster erstellt werden.

GUI-Ereignisse, -Threads und -Subroutinen

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.

Jedes Mal, wenn ein GUI-Thread gestartet wird, ist das zuletzt gefundene Fenster dieses Threads zunächst das GUI-Fenster selbst. Dies ermöglicht Ihnen, FensterTitel und FensterText bei Fenster- und Steuerelementbefehlen wie WinMove, WinHide, WinSet, WinSetTitle und ControlGetFocus wegzulassen, um mit dem GUI-Fenster selbst zu arbeiten (sogar wenn es versteckt ist).

Klickt man auf ein Steuerelement, das gerade ein g-Label aufgrund eines vorherigen Klicks ausführt, wird das Ereignis verworfen. Um das zu verhindern, geben Sie Critical in der ersten Zeile der Subroutine an (allerdings werden dadurch auch andere Threads, wie z.B. das Drücken eines Hotkeys, gepuffert/verzögert).

Die internen Variablen A_Gui und A_GuiControl enthalten den Fensternamen und die ID des Steuerelements, das den aktuellen Thread gestartet hat. Weitere Informationen finden Sie unter A_Gui und A_GuiControl.

Um mehrere Ereignisse die gleiche Subroutine ausführen zu lassen, stapeln Sie einfach die entsprechenden Labelnamen übereinander. Zum Beispiel:

GuiEscape:
GuiClose:
ButtonCancel:
ExitApp  ; Alle Labels oben werden diesen Befehl ausführen.

Alle GUI-Threads verwenden vorerst die Standardwerte von Einstellungen wie SendMode. Diese Standardwerte können im automatischen Ausführungsbereich geändert werden.

Mit Tab kann der Tastaturfokus jeweils auf das nächste eingabefähige Steuerelement in einem GUI-Fenster gesetzt werden (Steuerelemente mit deaktiviertem Tabstop-Style werden übersprungen). Die Reihenfolge der Navigation richtet sich nach der Reihenfolge, in der die Steuerelemente ursprünglich hinzugefügt wurden. Wenn das Fenster zum ersten Mal angezeigt wird, bekommt das erste eingabefähige Steuerelement mit aktiviertem Tabstop-Style (den die meisten standardmäßig haben) den Tastaturfokus.

Bestimmte Steuerelemente können ein Und-Zeichen (&) enthalten, um einen Tastaturkurzbefehl zu erstellen, der im Text des Steuerelements je nach Systemeinstellung als unterstrichenes Zeichen dargestellt wird. Um einen solchen Tastaturkurzbefehl auszulösen, muss der Benutzer Alt gedrückt halten und dann das entsprechende Zeichen auf der Tastatur drücken. Drückt man den Tastaturkurzbefehl bei Button-, CheckBox- oder Radio-Steuerelementen, ist der Effekt das gleiche wie, als würde man das Steuerelement anklicken. Drückt man den Tastaturkurzbefehl bei GroupBox- oder Text-Steuerelementen, springt der Tastaturfokus auf das erste danach erstellte eingabefähige Steuerelement mit aktivem Tabstop-Style. Wenn mehrere Steuerelemente den gleichen Tastaturkurzbefehl verwenden und drückt man diesen, springt der Tastaturfokus zwischen diesen Steuerelementen abwechselnd hin und her.

Um ein direkt geschriebenes Und-Zeichen in einem der oben genannten Steuerelementen anzuzeigen, geben Sie wie folgt zwei aufeinanderfolgende Und-Zeichen an: Gui, Add, Button,, Speichern && Beenden.

Fensterdarstellung

Ein GUI-Fenster verwendet als Symbol das Tray-Symbol, welches zum Zeitpunkt der Erstellung des Fensters wirksam war. Daher muss, wenn ein anderes Symbol angezeigt werden soll, das Tray-Symbol vor der Erstellung des Fensters geändert werden. Zum Beispiel: Menu, Tray, Icon, MeinSymbol.ico. Es ist auch möglich, ein Fenster mit einem anderen großen Symbol zu versehen (das große Symbol wird im Alt-Tab-Fenster angezeigt). Zum Beispiel mit LoadPicture() und SendMessage:

SymbolGröße := 32  ; Die ideale Größe für Alt-Tab variiert je nach System und Windows-Version.
hIcon := LoadPicture("Mein Symbol.ico", "Icon1 w" SymbolGröße " h" SymbolGröße, BildTyp)
Gui +LastFound
SendMessage 0x0080, 1, hIcon  ; 0x0080 ist WM_SETICON; und 1 bedeutet ICON_BIG (0 wäre ICON_SMALL).
Gui Show

Aufgrund von Einschränkungen in Windows XP und höher werden CheckBox-, Radio- und GroupBox-Steuerelemente mit benutzerdefinierter Textfarbe im klassischen Design dargestellt.

Siehe auch: Margin (Abstände innerhalb eines Fensters).

Allgemeine Bemerkungen

GuiControl und GuiControlGet können verwendet werden, um mit einzelnen Steuerelementen in einem GUI-Fenster zu arbeiten.

Jedes GUI-Fenster kann bis zu 11000 Steuerelemente enthalten. Aber Vorsicht: Bei mehr als 5000 Steuerelementen kann das System instabil werden, abhängig vom Typ des Steuerelements.

Jedes Skript, das den GUI-Befehl irgendwo verwendet, ist automatisch persistent (selbst wenn der GUI-Befehl nie ausgeführt wird). Außerdem wird bei solchen Skripten standardmäßig ein Dialogfenster angezeigt, das den Benutzer fragt, ob die alte Instanz beibehalten oder mit einer neuen Instanz ersetzt werden soll, es sei denn, dies wird mit der #SingleInstance-Direktive überschrieben.

GuiControl, GuiControlGet, Menu, Steuerelemente, ListView, TreeView, Control, ControlGet, SplashImage, MsgBox, FileSelectFile, FileSelectFolder

Beispiele

Erstellt ein Popup-Fenster ähnlich wie SplashTextOn.

Gui, +AlwaysOnTop +Disabled -SysMenu +Owner  ; +Owner verhindert eine Taskleistenschaltfläche.
Gui, Add, Text,, Beliebiger Anzeigetext.
Gui, Show, NoActivate, Fenstertitel  ; NoActivate verhindert, dass ein anderes Fenster seinen Aktivzustand verliert.

Erstellt ein einfaches Eingabefenster zum Abfragen des Vor- und Nachnamens.

Gui, Add, Text,, Vorname:
Gui, Add, Text,, Nachname:
Gui, Add, Edit, vVorname ym  ; Die ym-Option beginnt eine neue Spalte für Steuerelemente.
Gui, Add, Edit, vNachname
Gui, Add, Button, default, OK  ; Das ButtonOK-Label (falls vorhanden) wird ausgeführt, wenn die Schaltfläche gedrückt wird.
Gui, Show,, Einfaches Eingabebeispiel
return  ; Ende des automatischen Ausführungsbereichs. Das Skript ist im Leerlauf, bis der Benutzer etwas tut.

GuiClose:
ButtonOK:
Gui, Submit  ; Benutzereingaben in die Steuerelementvariablen speichern.
MsgBox Sie haben "%Vorname% %Nachname%" eingegeben.
ExitApp

Erstellt ein Tab-Steuerelement mit mehreren Tabs, die jeweils verschiedene Steuerelemente für Interaktionszwecke enthalten.

Gui, Add, Tab2,, Erster Tab|Zweiter Tab|Dritter Tab  ; Tab2 statt Tab benötigt [v1.0.47.05+].
Gui, Add, CheckBox, vMeineCheckBox, Kontrollkästchen
Gui, Tab, 2
Gui, Add, Radio, vMeinRadio, Optionsfeld 1
Gui, Add, Radio,, Optionsfeld 2
Gui, Tab, 3
Gui, Add, Edit, vMeinEdit r5  ; r5 bedeutet 5 Zeilen hoch.
Gui, Tab  ; d.h. danach hinzugefügte Steuerelemente gehören nicht zum Tab-Steuerelement.
Gui, Add, Button, default xm, OK  ; xm positioniert die Schaltfläche in die untere linke Ecke.
Gui, Show
return

ButtonOK:
GuiClose:
GuiEscape:
Gui, Submit  ; Inhalt aller Steuerelemente in ihre Variablen speichern.
MsgBox Ihre Eingabe:`n%MeineCheckBox%`n%MeinRadio%`n%MeinEdit%
ExitApp

Erstellt eine ListBox mit Dateien aus einem Verzeichnis.

Gui, Add, Text,, Eine Datei zum Ausführen auswählen.`nDrücken Sie ESCAPE oder schließen Sie das Fenster, um den Vorgang abzubrechen.
Gui, Add, ListBox, vMeineListBox gMeineListBox w640 r10
Gui, Add, Button, Default, OK
Loop, C:\*.*  ; Ordner und Platzhaltermuster je nach Bedarf anpassen.
{
    GuiControl,, MeineListBox, %A_LoopFileFullPath%
}
Gui, Show
return

MeineListBox:
if (A_GuiEvent != "DoubleClick")
    return
; Andernfalls erfolgte ein Doppelklick auf einen Listeneintrag,
; also wie OK-Drücken behandeln und in den nächsten Label fallen.
ButtonOK:
GuiControlGet, MeineListBox  ; Aktuelle Auswahl in der ListBox abrufen.
MsgBox, 4,, Wollen Sie wirklich die folgende Datei öffnen?`n`n%MeineListBox%
IfMsgBox, No
    return
; Andernfalls versuchen zu starten:
Run, %MeineListBox%,, UseErrorLevel
if (ErrorLevel = "ERROR")
    MsgBox Die angegebene Datei konnte nicht gestartet werden. Scheinbar fehlt das entsprechende Programm.
return

GuiClose:
GuiEscape:
ExitApp

Zeigt jedes Mal eine kontextabhängige Hilfe via Tooltip an, wenn der Benutzer den Mauszeiger über ein bestimmtes Steuerelement bewegt.

Gui, Add, Edit, vMeinEdit
MeinEdit_TT := "Der Tooltip für das Steuerelement mit der Variable MeinEdit"
Gui, Add, DropDownList, vMeineDDL, Rot|Grün|Blau
MeineDDL_TT := "Wählen Sie eine Farbe aus."
Gui, Add, CheckBox, vMeineCheckBox, Dieses Steuerelement hat keinen Tooltip.
Gui, Show
OnMessage(0x0200, "WM_MOUSEMOVE")
return

WM_MOUSEMOVE()
{
    static AktStrlmnt, VorStrlmnt, _TT  ; _TT bleibt für unteren ToolTip leer.
    AktStrlmnt := A_GuiControl
    if (AktStrlmnt != VorStrlmnt and not InStr(AktStrlmnt, " "))
    {
        ToolTip  ; Vorherigen Tooltip verstecken.
        SetTimer, ZeigeToolTip, 1000
        VorStrlmnt := AktStrlmnt
    }
    return

    ZeigeToolTip:
    SetTimer, ZeigeToolTip, Off
    ToolTip % %AktStrlmnt%_TT  ; Erstes Prozentzeichen erzwingt einen Ausdruck.
    SetTimer, EntferneToolTip, 3000
    return

    EntferneToolTip:
    SetTimer, EntferneToolTip, Off
    ToolTip
    return
}


GuiClose:
ExitApp

Erstellt eine Bildschirmanzeige (OSD) via transparentem Fenster.

UnsichtbareFarbe := "EEAA99"  ; Kann eine beliebige RGB-Farbe sein (wird weiter unten transparent gemacht).
Gui +LastFound +AlwaysOnTop -Caption +ToolWindow  ; +ToolWindow verhindert Taskleistenschaltfläche und Alt-Tab-Zugriff.
Gui, Color, %UnsichtbareFarbe%
Gui, Font, s32  ; Große Schriftgröße setzen (32 Punkte).
Gui, Add, Text, vMeinText cLime, XXXXX YYYYY  ; XX & YY dienen zum automatischen Anpassen der Fenstergröße.
; Macht alle Pixel dieser Farbe unsichtbar und den Text selbst transparent (150):
WinSet, TransColor, %UnsichtbareFarbe% 150
SetTimer, OSDAktualisieren, 200
Gosub, OSDAktualisieren  ; Erste Aktualisierung sofort machen, anstatt auf den Timer zu warten.
Gui, Show, x0 y400 NoActivate  ; NoActivate verhindert, dass ein anderes Fenster seinen Aktivzustand verliert.
return

OSDAktualisieren:
MouseGetPos, MausX, MausY
GuiControl,, MeinText, X%MausX%, Y%MausY%
return

Erstellt einen animierten Fortschrittsbalken auf einem Hintergrundbild.

Gui, Color, White
Gui, Add, Picture, x0 y0 h350 w450, %A_WinDir%\system32\ntimage.gif
Gui, Add, Button, Default xp+20 yp+250, Animation starten
Gui, Add, Progress, vMeinProgress w416
Gui, Add, Text, vMeinText wp  ; wp bedeutet "vorherige Breite verwenden".
Gui, Show
return

ButtonAnimationStarten:
Loop, %A_WinDir%\*.*
{
    if (A_Index > 100)
        break
    GuiControl,, MeinProgress, %A_Index%
    GuiControl,, MeinText, %A_LoopFileName%
    Sleep 50
}
GuiControl,, MeinText, Animation beendet.
return

GuiClose:
ExitApp

Erstellt einen einfachen Bildbetrachter.

Gui, +Resize
Gui, Add, Button, default, Neues Bild &laden
Gui, Add, Radio, ym+5 x+10 vOption checked, &Originalgröße
Gui, Add, Radio, ym+5 x+10, &Kompletter Bildschirm
Gui, Add, Pic, xm vPic
Gui, Show
return

ButtonNeuesBildLaden:
FileSelectFile, Datei,,, Bild auswählen:, Bilder (*.gif; *.jpg; *.bmp; *.png; *.tif; *.ico; *.cur; *.ani; *.exe; *.dll)
if not Datei
    return
Gui, Submit, NoHide ; Die Werte der Radio-Steuerelemente speichern.
if (Option = 1)  ; Bild mit aktueller Größe anzeigen.
{
    Breite := 0
    Höhe := 0
}
else ; Zweites Optionsfeld ausgewählt: Bildgröße an Bildschirmgröße anpassen.
{
    Breite := A_ScreenWidth - 28  ; Minus 28, um Platz für Rahmen und Innenabstand zu schaffen.
    Höhe := -1  ; "Seitenverhältnis beibehalten" erscheint sinnvoll.
}
GuiControl,, Pic, *w%Breite% *h%Höhe% %Datei%  ; Bild laden.
Gui, Show, xCenter y0 AutoSize, %Datei%  ; Fenstergröße an Bildgröße anpassen.
return

GuiClose:
ExitApp

Erstellt einen einfachen Texteditor mit Menüleiste.

; Untermenüs für die Menüleiste erstellen:
Menu, DateiMenü, Add, &Neu, DateiNeu
Menu, DateiMenü, Add, Ö&ffnen..., DateiÖffnen
Menu, DateiMenü, Add, &Speichern, DateiSpeichern
Menu, DateiMenü, Add, Speichern &unter..., DateiSpeichernUnter
Menu, DateiMenü, Add  ; Trennlinie.
Menu, DateiMenü, Add, &Beenden, DateiBeenden
Menu, HilfeMenü, Add, Inf&o, HilfeInfo

; Untermenüs in die Menüleiste einfügen:
Menu, MeineMenüleiste, Add, &Datei, :DateiMenü
Menu, MeineMenüleiste, Add, &?, :HilfeMenü

; Fenster mit der Menüleiste ausstatten:
Gui, Menu, MeineMenüleiste

; Haupt-Eingabefeld erstellen und Fenster anzeigen:
Gui, +Resize  ; Größe des Fensters veränderbar machen.
Gui, Add, Edit, vHauptEdit WantTab W600 R20
Gui, Show,, Unbenannt
AktuelleDateiName := ""  ; Bedeutet, dass keine aktuelle Datei vorhanden ist.
return

DateiNeu:
GuiControl,, HauptEdit  ; Eingabefeld leeren.
return

DateiÖffnen:
Gui +OwnDialogs  ; Benutzer zwingen, das FileSelectFile-Dialogfenster zu schließen, bevor er zum Hauptfenster zurückkehren kann.
FileSelectFile, AusgewählteDateiName, 3,, Datei öffnen, Text-Dokumente (*.txt)
if not AusgewählteDateiName  ; Keine Datei ausgewählt.
    return
Gosub DateiLesen
return

DateiLesen:  ; Der Aufrufer hat AusgewählteDateiName bereits für uns gesetzt.
FileRead, HauptEdit, %AusgewählteDateiName%  ; Inhalt der Datei lesen und in die Variable speichern.
if ErrorLevel
{
    MsgBox "%AusgewählteDateiName%" konnte nicht geöffnet werden.
    return
}
GuiControl,, HauptEdit, %HauptEdit%  ; Text in das Steuerelement einfügen.
AktuelleDateiName := AusgewählteDateiName
Gui, Show,, %AktuelleDateiName%   ; Dateinamen in der Titelleiste anzeigen.
return

DateiSpeichern:
if not AktuelleDateiName   ; Noch kein Dateiname ausgewählt, also "Speichern unter...".
    Goto DateiSpeichernUnter
Gosub AktuelleDateiSpeichern
return

DateiSpeichernUnter:
Gui +OwnDialogs  ; Benutzer zwingen, das FileSelectFile-Dialogfenster zu schließen, bevor er zum Hauptfenster zurückkehren kann.
FileSelectFile, AusgewählteDateiName, S16,, Datei speichern, Text-Dokumente (*.txt)
if not AusgewählteDateiName  ; Keine Datei ausgewählt.
    return
AktuelleDateiName := AusgewählteDateiName
Gosub AktuelleDateiSpeichern
return

AktuelleDateiSpeichern:  ; Der Aufrufer hat sichergestellt, dass AktuelleDateiName nicht leer ist.
if FileExist(AktuelleDateiName)
{
    FileDelete %AktuelleDateiName%
    if ErrorLevel
    {
        MsgBox Überschreiben der Datei "%AktuelleDateiName%" fehlgeschlagen.
        return
    }
}
GuiControlGet, HauptEdit  ; Inhalt des Eingabefeldes abrufen.
FileAppend, %HauptEdit%, %AktuelleDateiName%  ; Inhalt in eine Datei speichern.
; Bei Erfolg den Dateinamen in der Titelleiste anzeigen (falls es mit DateiSpeichernUnter aufgerufen wurde):
Gui, Show,, %AktuelleDateiName%
return

HilfeInfo:
Gui, Info:+owner1  ; Hauptfenster (Gui #1) zum Elternfenster des Info-Fensters machen.
Gui +Disabled  ; Interaktion mit dem Hauptfenster verbieten.
Gui, Info:Add, Text,, Beliebiger Text.
Gui, Info:Add, Button, Default, OK
Gui, Info:Show
return

InfoButtonOK:  ; Dieser Abschnitt gilt für das Info-Fenster oben.
InfoGuiClose:
InfoGuiEscape:
Gui, 1:-Disabled  ; Interaktion mit dem Hauptfenster erlauben (muss vor dem nächsten Schritt erfolgen).
Gui Destroy  ; Info-Fenster zerstören.
return

GuiDropFiles:  ; Ziehen & Ablegen unterstützen.
Loop, Parse, A_GuiEvent, `n
{
    AusgewählteDateiName := A_LoopField  ; Nur die erste Datei nehmen (sofern mehrere Dateien vorhanden sind).
    break
}
Gosub DateiLesen
return

GuiSize:
if (ErrorLevel = 1)  ; Das Fenster wurde minimiert. Keine Aktion notwendig.
    return
; Andernfalls wurde das Fenster maximiert oder dessen Größe geändert. Größe des Eingabefeldes entsprechend anpassen.
NeueBreite := A_GuiWidth - 20
NeueHöhe := A_GuiHeight - 20
GuiControl, Move, HauptEdit, W%NeueBreite% H%NeueHöhe%
return

DateiBeenden:     ; Benutzer hat "Beenden" in DateiMenü ausgewählt.
GuiClose:  ; Benutzer hat das Fenster geschlossen.
ExitApp