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 genutzt werden.
Geben Sie für Unterbefehl Folgendes an:
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 und dabei alle existierenden GUIs mit diesem Namen zerstört. Ansonsten wird eine neue GUI erstellt, die weder benannt noch nummeriert ist.
Optionen kann vom Haupt-GUI-Befehl unterstützte Optionen enthalten.
Lässt man Titel weg, wird der Dateiname des Skripts verwendet.
Nachteile und Vorbehalte:
Gui New
nicht notwendig, weil in den meisten Fällen das Fenster bei Bedarf automatisch erstellt wird.Gui, %GuiHwnd%:Default
, um dieses Fenster als Standardfenster für nachfolgende Gui-Befehle zu machen.Vorteile:
Gui New
stellt sicher, dass eine neue GUI erstellt wird und keine bereits vorhandene GUIs modifiziert werden. Eventuell erhöht dieser Unterbefehl zudem die Chance, dass andere Personen (oder später der Verfasser selbst) den Zweck des Skripts besser verstehen.Gui New
verhindert, dass GUIs mit eindeutigen Namen oder Nummern versehen werden müssen. Dieser Unterbefehl ist besonders nützlich, wenn das Skript mehr als eine GUI erstellen muss oder in andere Skripte eingebunden werden soll.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.
Fügt ein Steuerelement in das GUI-Fenster ein (und erstellt vorher das GUI-Fenster, falls notwendig).
Gui, Add, Steuerelement , Optionen, Text
Steuerelement kann folgendes sein:
Optionen ist eine Zeichenkette von null oder mehr Optionen, wie in den folgenden Abschnitten beschrieben:
Zum Beispiel:
Gui, Add, Text,, Bitte tragen Sie Ihren Namen ein: Gui, Add, Edit, vName Gui, Show
Sofern in Optionen nicht anders angegeben, wird dieser Unterbefehl das Fenster sichtbar machen, entminimieren (falls notwendig), aktivieren und den Fenstertitel setzen.
Gui, Show , Optionen, Titel
Lässt man Titel weg, 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 Größe des Fensters automatisch an die Größe und Position aller darin enthaltenen Steuerelemente angepasst.
Folgende Zeichenketten können in Optionen angegeben werden (jede Zahl muss im dezimalen Format sein):
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 des Clientbereichs an (in Pixel).
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 Größe des Fensters automatisch an die Größe und Position aller darin enthaltenen sichtbaren Steuerelemente an. Diese Option ist besonders hilfreich, 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 darunterliegende Fenster.
Maximize: Maximiert und aktiviert das Fenster.
Restore: Entminimiert oder entmaximiert das Fenster, falls nötig. Das Fenster wird zudem sichtbar gemacht und aktiviert, falls nötig.
NoActivate: Entminimiert oder entmaximiert das Fenster, falls nötig. Das Fenster wird zudem sichtbar gemacht, ohne es zu aktivieren.
NA: Macht das Fenster sichtbar, ohne es zu aktivieren. Wenn das Fenster minimiert ist, bleibt es minimiert, aber wird eventuell in der Z-Rangordnung nach oben steigen (die aktuelle Rangordnung kann via Alt-Tab-Fenster überprüft 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 darunterliegende Fenster. Funktionsgemäß ist das identisch mit Gui Cancel. Diese Option hat aber den Vorteil, dass es ein verstecktes Fenster verschieben, größer/kleiner machen oder neu betiteln kann, ohne es sichtbar zu machen. Zum Beispiel: Gui, Show, Hide x55 y66 w300 h200, Neuer Titel
.
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.
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.
Entfernt das Fenster (falls vorhanden) und alle darin enthaltenen Steuerelemente, um die entsprechenden Speicher- und Systemressourcen freizugeben.
Gui, Destroy
Falls 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.
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, werden die Attribute der zuvor gesetzten Schrift verwendet. Ansonsten können Sie ersatzweise einen oder mehrere der folgenden Optionsbuchstaben angeben:
C: Der Name einer Farbe (siehe Farbentabelle) oder ein RGB-Wert, oder das Wort Default, um die Standardfarbe des Systems zu setzen (üblicherweise schwarz). Beispielwerte: cRed
, cFFFFAA
, cDefault
. Hinweis: Button-Steuerelemente können nicht mit einer benutzerdefinierten Farbe versehen werden. Alternativ kann man auch die C-Option nutzen, 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
(muss dezimal sein).
W: Breite (Dicke). Eine Zahl im Bereich von 1 bis 1000 (400 ist normal und 700 ist fett). Zum Beispiel: w600
(muss dezimal sein).
Die folgenden Wörter werden auch 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 unberührt). Man kann norm zum Beispiel nutzen, um alle Attribute auszuschalten und danach bestimmte Attribute wieder einzuschalten. norm italic
beispielsweise würde die Schrift normalisieren und danach kursiv machen.
Mehrere Optionen müssen mit einem Leerzeichen voneinander getrennt werden. Zum Beispiel: cBlue s12 bold
.
Bei mehreren GUI-Fenstern sollte man beachten, dass jedes Fenster seine eigenen gespeicherten Schrifteinstellungen abruft, wenn neue Steuerelemente erstellt werden.
Pro forma ist noch zu erwähnen, dass das Betriebssystem vorgefertigte Dialogfenster anbietet, die der Benutzer zum Auswählen einer Farbe, einer Schrift 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 erfolgen:
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 und so weiter) 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 und so weiter). |
3 | NONANTIALIASED_QUALITY | Die Schrift wird nie antialiasiert; das heißt, dass die eckigen Kanten einer Schrift nicht geglättet werden. |
4 | ANTIALIASED_QUALITY | Die Schrift wird antialiasiert bzw. 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 darüber, was diese Werte bedeuten, finden Sie unter Microsoft Docs: CreateFont.
Standardmäßig gilt die höchste Qualitätseinstellung. Deshalb wird dieses Feature eher dazu verwendet, Kantenglättung zu deaktivieren, um den Text bei bestimmten Fällen besser lesbar zu machen.
Bestimmt die Hintergrundfarbe des Fensters und/oder aller darin enthaltenen Steuerelemente.
Gui, Color , Fensterfarbe, Steuerelementfarbe
Fensterfarbe definiert die Hintergrundfarbe des GUI-Fensters selbst. Steuerelementfarbe wird auf alle gegenwärtigen und zukünftigen Steuerelemente im Fenster angewendet (sofern dieses Steuerelement benutzerdefinierte Farben unterstützt). Steuerelementfarbe hat nur eine einmalige Auswirkung auf ListView- und TreeView-Steuerelemente; nachfolgende Änderungen der Steuerelementfarbe sind bei diesen Steuerelementen wirkungslos. In solchen Fällen nutzt man GuiControl +BackgroundFF9977, MeineListView
, um die Farbe explizit zu ändern.
Beide Parameter können leer gelassen werden, um die entsprechende Farbe beizubehalten. Ansonsten kann eine der 16 HTML-Hauptfarben oder ein 6-stelliger RGB-Wert (0x-Präfix ist optional) angegeben werden, oder das Wort "Default", um die Standardfarbe wiederherzustellen. Beispielwerte: Silver
, FFFFAA
, 0xFFFFAA
, Default
.
Ein Fenster benutzt als Hintergrundfarbe standardmäßig die Standardschaltflächenfarbe des Systems, während ein Steuerelement als Hintergrundfarbe standardmäßig die Standardfensterfarbe des Systems benutzt (üblicherweise weiß).
Die Farbe der Menüleiste und aller darin enthaltenen Untermenüs können 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 zunächst 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 folgenden Zeilen können 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 das Beispiel einer Bildschirmanzeige (OSD), die zeigt, wie diese Methode praktisch eingesetzt werden kann.
Bestimmt die Anzahl der Pixel, die auf der linken/rechten und oberen/unteren Seite des Fensters freigelassen werden sollen, wenn Steuerelemente aufgrund fehlender X- oder Y-Koordinate automatisch positioniert werden.
Gui, Margin , X, Y
Diese Abstände werden auch genutzt, 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 das erste 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 Schrifthöhe für Unten & Oben, 1.25 mal Schriftbreite für Links & Rechts).
Man kann die Abstände ändern, während Steuerelemente hinzugefügt werden. Allerdings gelten solche Änderungen nur für Steuerelemente, die nachträglich hinzugefügt werden, nicht für Steuerelemente, die bereits vorhanden sind. Wenn man X oder Y weglässt, bleibt der entsprechende Abstand unverändert.
Nach dem GUI-Befehl können eine oder mehrere Optionen angegeben werden.
Gui, +/-Option1 +/-Option2 ...
Aus Leistungsgründen ist es besser, alle Optionen auf einer Zeile zu setzen, bevor das Fenster erstellt wird (das heißt, bevor andere Unterbefehle wie Gui Add verwendet werden).
Der Effekt des Befehls ist kumulativ (summierend); das heißt, dass dieser Befehl nur die explizit angegebenen Optionen ändert, 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 bzw. 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 benutzt man eher selten.
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 man bestimmte Farben des Fensters via WinSet TransColor transparent gemacht hat.
Delimiter: Bewirkt, dass das Fenster nicht den Vertikalstrich (|), sondern ein beliebig anderes Zeichen als Trennzeichen verwendet, wenn die Inhalte der Steuerelemente 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 kann man mit Gui +Delimiter`n
ein Zeilenumbruchszeichen als Trennzeichen definieren, das besonders gut für Fortsetzungsbereiche geeignet ist. Mit Gui +Delimiter|
kann man wiederum das Standardtrennzeichen wiederherstellen. Wenn ein Leer- oder Tabulatorzeichen notwendig ist, kann man Gui +DelimiterSpace
oder Gui +DelimiterTab
angeben. Das Ändern des Trennzeichens wirkt sich auf alle vorhandenen und nachfolgenden Threads aus, die sich auf dieses bestimmte Fenster beziehen.
Disabled: Deaktiviert das Fenster, um den Benutzer daran zu hindern, mit den darin enthaltenen Steuerelementen zu interagieren. Diese Option wird oft bei Fenstern benutzt, die untergeordnete Fenster haben (siehe Owner).
DPIScale [v1.1.11+]: Verwenden Sie Gui -DPIScale
, um die üblicherweise 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 auf Basis des Bildschirm-DPI-Wertes skaliert. Bei einem DPI-Wert von beispielsweise 144 (150%) würde Gui Show, w100
die GUI 150 (100 * 1.5) Pixel breit machen, während das Ändern 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; das heißt, dass Koordinaten aus anderen Quellen wie ControlGetPos oder WinGetPos nicht funktionieren werden. Es gibt eine Reihe von Möglichkeiten, damit umzugehen:
Gui +DPIScale
) und deaktivieren (Gui -DPIScale
). Die Änderung der Einstellung hat keinen Einfluss auf bereits gesetzte Positionen oder Größen.x*(A_ScreenDPI/96)
beispielsweise wandelt logische Koordinaten bzw. Gui-Koordinaten (in diesem Fall x) in physische Koordinaten bzw. Nicht-Gui-Koordinaten um.HwndAusgabeVar [v1.1.04+]: Diese Option speichert die HWND-Nummer (eindeutige ID) der GUI in AusgabeVar. Zum Beispiel: Gui +HwndMeineGuiHwnd
. Wenn man diese Option innerhalb einer Funktion verwendet, wird AusgabeVar als dynamische Variable behandelt. Die HWND-Nummer (eindeutige ID) einer GUI wird oft in Verbindung mit PostMessage, SendMessage und DllCall() genutzt. Außerdem kann diese Nummer direkt als ahk_id-FensterTitel oder anstelle eines GUI-Namens verwendet werden; zum Beispiel Gui %MeineGuiHwnd%:Destroy
.
Label [v1.0.44.09+]: Bestimmt benutzerdefinierte Namen für die speziellen Label des Fensters. Gui MeineGui:+LabelMeineGui_On
beispielsweise bewirkt, dass das Fenster nicht MeineGuiGuiClose und MeineGuiGuiSize, sondern MeineGui_OnClose und MeineGui_OnSize als Label (sofern vorhanden) verwendet. Das heißt, dass "MeineGuiGui" in allen speziellen Labelnamen mit "MeineGui_On" ersetzt wird. Diese Option kann auch genutzt werden, um mehrere Fenster die gleiche Gruppe von Labels verwenden zu lassen (in diesem Fall kann das Skript A_Gui abrufen, um festzustellen, welches Fenster die Subroutine gestartet hat).
LastFound: Definiert das Fenster als das zuletzt gefundene Fenster (obwohl das in einem GUI-Thread nicht notwendig ist, weil dies automatisch geschieht), damit Befehle wie WinSet mit diesem Fenster interagieren können, sogar wenn es versteckt ist (das heißt, dass DetectHiddenWindows nicht notwendig ist). Diese Option ist besonders nützlich, um die Eigenschaften des Fensters zu ändern, bevor es angezeigt wird. Zum Beispiel:
Gui +LastFound WinSet, TransColor, %UnsichtbareFarbe% 150 Gui Show
LastFoundExist [v1.0.43.09+]: Im Gegensatz zu anderen Optionen wird LastFoundExist nur erkannt, wenn keine anderen Optionen auf der gleichen Zeile vorhanden sind. +LastFoundExist ist das gleiche wie +LastFound - der einzige Unterschied ist, dass das Fenster nicht erstellt wird, wenn es noch nicht existiert. Der Hauptnutzen dieser Option ist es, zu erkennen, 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 auch Bestandteil von Resize (siehe unten).
MinimizeBox (standardmäßig vorhanden): Aktiviert die Titelleistenschaltfläche zum Minimieren des Fensters.
MinSize und MaxSize [v1.0.44.13+]: Legt die minimale und/oder maximale Größe des Fensters fest, z. B. wenn der Benutzer die Kanten des Fensters zieht, um es kleiner oder größer zu machen. Geben Sie das Wort MinSize und/oder MaxSize ohne Suffix an, um die aktuelle Größe des Fensters als Grenzwert zu nutzen (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; zum Beispiel: 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). Jede Zahl muss im dezimalen Format sein.
Die Breite oder Höhe kann weggelassen werden, um sie unverändert zu lassen (z. B. +MinSize640x
oder +MinSizex480
). Darüber hinaus kann Min/MaxSize mehrfach angegeben werden, um eine Dimension mit der aktuellen Größe des Fensters und die andere mit einer expliziten Größe zu versehen. +MinSize +MinSize640x
beispielsweise verwendet die aktuelle Größe des Fensters für die Höhe und 640 Pixel für die Breite.
Wenn MinSize und MaxSize nie genutzt werden, gelten die Standardwerte des Betriebssystems (ähnlich wie Gui -MinSize -MaxSize
, was auch die Standardwerte wiederherstellt).
Hinweis: Das Fenster muss +Resize haben, damit der Benutzer es kleiner oder 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 dabei modal; das heißt, dass der Benutzer das Dialogfenster schließen muss, bevor er weiter mit dem GUI-Fenster interagieren kann. ToolTip-, Progress- und SplashImage-Fenster können hingegen nicht modal gemacht werden, selbst wenn sie einem Fenster untergeordnet werden; diese befinden sich immer über dem Hauptfenster. Untergeordnete Dialogfenster werden automatisch zerstört, sobald das Hauptfenster zerstört wird.
Normalerweise ist es nicht notwendig, diese Einstellung wieder zu deaktivieren, weil sie keine Auswirkung auf andere Threads hat. Verwenden Sie je nach Bedarf Gui -OwnDialogs
, um ein Thread sowohl untergeordnete als auch nicht-untergeordnete Dialogfenster anzeigen zu lassen.
Wenn kein Fensternamepräfix angegeben ist -- beispielsweise Gui +OwnDialogs
anstelle von Gui MeineGui:+OwnDialogs
-- werden die Dialogfenster dem Standardfenster des Threads untergeordnet.
Owner: Mit +Owner kann das Fenster einem anderen Fenster untergeordnet werden. Ein untergeordnetes Fenster hat standardmäßig keine eigene Taskleistenschaltfläche und befindet sich, sofern sichtbar, immer über dem Hauptfenster. Es wird automatisch zerstört, sobald das Hauptfenster zerstört wird. +Owner funktioniert nur, nachdem das Hauptfenster erstellt wurde. In [v1.1.05+] kann diese Option vor oder nach Erstellen des Hauptfensters verwendet werden. Es gibt zwei Möglichkeiten, wie man +Owner nutzen kann:
Gui, MeineGui:+OwnerAndereGui ; Definiert MeineGui als Unterfenster von AndereGui. Gui, MeineGui:+Owner ; Definiert MeineGui als Unterfenster vom Hauptfenster des Skripts, um dessen Taskleistenschaltfläche zu verstecken.
[v1.1.03+]: Verwenden Sie +Owner
und direkt danach den Namen oder die Nummer einer bereits vorhandenen GUI oder die HWND-Nummer (eindeutige ID) eines beliebigen nicht-untergeordneten Fensters.
Hinweis zur Kompatibilität: In [v1.1.03+] entfernt +Owner
den WS_CHILD-Style und setzt den WS_POPUP-Style. Um einer GUI ein Fenster überzuordnen, müssen Skripte entweder auf die +Parent
-Option zurückgreifen, oder die entsprechenden Styles nach der +Owner
-Option überschreiben.
Um dem Benutzer die Interaktion mit dem Hauptfenster zu verbieten, während ein untergeordnetes Fenster angezeigt wird, nutzen Sie Gui +Disabled
. Später kann man die Interaktion mit dem Hauptfenster, nachdem das untergeordnete Fenster geschlossen oder entfernt wurde, wieder mit Gui -Disabled
erlauben. Dies sollte aber erfolgen, bevor das untergeordnete Fenster geschlossen bzw. zerstört wird, damit das übergeordnete Fenster automatisch reaktiviert werden kann.
Parent [v1.1.03+]: Verwenden Sie +Parent
und direkt danach den Namen oder die Nummer einer bereits vorhandenen GUI oder die HWND-Nummer (eindeutige ID) eines beliebigen Fensters oder Steuerelements, um der GUI eines dieser Genannten überzuordnen. Mit -Parent
kann die GUI wieder in ein nicht-untergeordnetes Fenster umgewandelt werden. Diese Option funktioniert auch, nachdem das Fenster erstellt wurde.
Bekannte Einschränkung: Eine UI-Access-Ausführung verhindert, dass die +Parent
-Option bei einem existierenden Fenster funktioniert, wenn das neue übergeordnete Fenster den "Immer im Vordergrund"-Zustand hat und das untergeordnete Fenster nicht.
Resize: Aktiviert die Größenänderung des Fensters und 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 auch entfernt.
Theme: Geben Sie -Theme
an, um alle nachfolgende Steuerelemente im klassischen Design darzustellen (nur ab Windows XP). Mit +Theme
kann das neue Design wieder für nachfolgende Steuerelemente 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. Dies 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 Nummer 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 Nummer an, um einen erweiterten Style hinzuzufügen oder zu entfernen. +E0x40000
beispielsweise würde den WS_EX_APPWINDOW-Style hinzufügen, um eine Taskleistenschaltfläche für ein Fenster bereitzustellen, das aktuell keine hat. Andere erweiterte Styles, die nur selten verwendet werden und aufgrund dessen hier nicht aufgelistet sind, finden Sie unter Extended Window Styles | Microsoft Docs.
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, Hilfsmenü, Add, Inf&o, MenuHandler Menu, MeineMenüleiste, Add, &Datei, :Dateimenü ; Fügt die oben erstellten Untermenüs hinzu. Menu, MeineMenüleiste, Add, &?, :Hilfsmenü Gui, Menu, MeineMenüleiste
In der ersten Zeile oben ist zu erkennen, dass nach Ö&ffnen
der Tastaturkurzbefehl Ctrl+F
erfolgt (mit einem Tabulatorzeichen dazwischen). Wenn der Benutzer diesen Tastaturkurzbefehl drückt, wird die Aktion des Menüpunkts ausgeführt, ohne dass er 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 durch ungewöhnliche Mittel wie IME oder Alt+NNNN ausgelöst werden.
Wenn eine bestimmte Tastenkombination nicht automatisch funktioniert, muss eventuell ein kontextabhängiger Hotkey verwendet werden. 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.
Verwenden Sie Gui Menu
(bzw. lassen Sie den letzten Parameter weg), um die aktuelle Menüleiste des Fensters zu entfernen.
Ein Menü, das bereits als Menüleiste fungiert, sollte nicht als Aufklappmenü oder Untermenü genutzt werden. Das liegt daran, dass Menüleisten intern ein anderes Format benötigen (diese Einschränkung gilt jedoch nur für die Menüleiste selbst, nicht für die darin enthaltenen 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). Führen Sie die folgenden Schritte durch, um solche Änderungen vornehmen zu können: 1) entfernen Sie die Menüleiste mit Gui Menu
(d. h. MenüName weglassen); 2) führen Sie die gewünschten Änderungen durch; 3) fügen Sie die Menüleiste via Gui, Menu, MeineMenüleiste
wieder hinzu.
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.
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. Das optionale Wort Off stellt die Originalfarben der Titelleiste und Taskleistenschaltfläche wieder her (die tatsächliche Auswirkung variiert aber je nach Version des Betriebssystems). Das folgende Beispiel lässt das Fenster dreimal aufblinken, weil jedes Paar von "Gui Flash" die Farben des Fensters invertiert und wiederherstellt:
Loop 6 { Gui Flash Sleep 500 ; Dieser Wert ist ziemlich empfindlich; Änderungen können zu unerwarteten Ergebnissen führen. }
Ändert den Standard-GUI-Fensternamen des aktuellen Threads.
Gui, GuiName:Default
Dieser Fenstername kommt standardmäßig zum Einsatz, wenn GuiControl, GuiControlGet und der Gui-Befehl selbst ohne spezifischen Fensternamen verwendet werden. Das folgende Beispiel zeigt, wie man den Standardfensternamen in "MeineGui" ändern kann: 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 Zerstörung des Fensters erhalten bleibt. Wenn das Fenster keinen Namen hat, wird der Standardfenstername, sobald das Fenster zerstört wird, auf 1 zurückgesetzt.
[v1.1.23+]: Die interne Variable A_DefaultGui enthält den Namen oder die Nummer der Standard-GUI.
Hinweis: Für einfache Layouts reichen in der Regel die nachfolgenden Optionen vollkommen aus. Für komplexere Layouts allerdings könnten Tools wie der SmartGUI Creator von Rajat hilfreicher sein, weil sie es möglich machen, ein GUI-Fenster visuell zu gestalten, gemäß dem Motto "what you see is what you get". 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:
R: Textzeilen (kann eine Floating-Point-Zahl enthalten, z. B. 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.
W: Breite in Pixel. Lässt man diese Option weg, wird die Breite von einigen Steuerelementen automatisch anhand ihres Inhalts berechnet; Tab-Steuerelemente verwenden standardmäßig das 30-fache der aktuellen Schriftgröße, plus das 3-fache des horizontalen Abstands; vertikale ProgressBars verwenden standardmäßig das 2-fache der aktuellen Schriftgröße; und horizontale ProgressBars, horizontale Sliders, DropDownLists, ComboBoxes, ListBoxes, GroupBoxes, Edits und Hotkeys verwenden standardmäßig das 15-fache der aktuellen Schriftgröße (außer GroupBoxes, die das 18-fache verwenden, um Platz für Abstände zu schaffen).
H: Höhe in Pixel. Wenn man sowohl H als auch R weglässt, ist DropDownList, ComboBox, ListBox und ein leeres mehrzeiliges Edit-Steuerelement standardmäßig 3 Zeilen hoch; GroupBox standardmäßig 2 Zeilen hoch; vertikaler Slider und vertikale ProgressBar standardmäßig 5 Zeilen hoch; horizontaler Slider standardmäßig 30 Pixel hoch (außer wenn eine Dicke angegeben wurde); horizontale ProgressBar standardmäßig das 2-fache der aktuellen Schriftgröße hoch; Hotkey standardmäßig 1 Zeile hoch; und Tab standardmäßig 10 Zeilen hoch. Alle anderen Steuerelemente bekommen automatisch eine Höhe zugewiesen, die auf ihren Inhalt basiert. Beachten Sie bei einer DropDownList und ComboBox, dass sich H auf eine Höhe bezieht, die sich zusammensetzt aus der Höhe des sichtbaren Bereichs und der Höhe des Listenbereichs (bei einem zu niedrigen Wert wird immer mindestens ein Listeneintrag angezeigt). Außerdem ist es ratsam, die gewünschte Höhe via R statt H zu definieren, um die vollständige Sichtbarkeit der Textzeilen zu gewährleisten.
wp+n, hp+n, wp-n und hp-n können genutzt werden, um die Breite und/oder Höhe eines Steuerelements auf genau die Breite oder Höhe des zuvor hinzugefügten Steuerelements zu setzen, die optional um eine beliebige Zahl (in diesem Fall n) erhöht oder verringert werden kann. wp
beispielsweise würde die Breite eines Steuerelements auf die des vorherigen Steuerelements setzen, und wp-50
auf die Breite des vorherigen Steuerelements, aber um 50 verringert.
X, Y: X-Position, Y-Position. 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 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+]: X+ und Y+ können den Buchstaben M als Ersatz für den aktuellen Abstand (Margin) des Fensters nutzen. 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, xp-n und yp-n (hierbei ist n eine beliebige Zahl) können genutzt werden, um Steuerelemente relativ zur linken oberen Ecke des zuvor hinzugefügten Steuerelements zu positionieren. Dies ist zum Beispiel nützlich, um Steuerelemente mit einer GroupBox zu umschließen.
xm und ym können genutzt 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 erfolgen).
xs und ys: Diese haben einen ähnlichen Effekt wie xm und ym, allerdings beziehen sie sich 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 ; Fügt ein ziemlich breites Eingabefeld in den obersten Bereich des Fensters ein. Gui, Add, Text, Section, Vorname: ; Speichert die Position dieses Steuerelements und beginnt eine neue Sektion. Gui, Add, Text,, Nachname: Gui, Add, Edit, ys ; Beginnt eine neue Spalte innerhalb dieser Sektion. Gui, Add, Edit Gui, Show
Nach xs und ys kann optional ein Plus-/Minuszeichen und eine Zahl erfolgen. Außerdem ist es möglich, das Wort Section und xs/ys in den Optionen eines Steuerelements anzugeben, damit das Steuerelement gleichzeitig auf die alte Sektion zugreifen kann und eine neue Sektion für nachfolgende Steuerelemente etabliert.
X und/oder Y wegzulassen hat den Vorteil, dass sich ein GUI-Layout automatisch an zukünftigen Änderungen bzgl. der Größe von Steuerelementen oder der Schrift anpassen kann. Wenn man stattdessen jedes Steuerelement absolut positioniert, müssen alle Steuerelemente unterhalb und/oder auf der rechten Seite des Steuerelements, dessen Größe geändert wurde, eventuell manuell verschoben werden.
Lässt man sowohl X als auch Y weg, wird das Steuerelement mit einem bestimmten Abstand (Margin) unterhalb des zuvor hinzugefügten Steuerelements positioniert. 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. Soll nur der vorgegebene vertikale Abstand genutzt werden, geben Sie Y+M
oder einen beliebigen Wert für X an.
Wenn nur eine Komponente weggelassen wird, hängt ihr Standardwert davon ab, welche Option zur Angabe der anderen Komponente verwendet wurde:
X angegeben | Standard für Y |
---|---|
xn oder xm | Unterhalb aller vorherigen Steuerelemente (maximale Y-Ausdehnung plus Margin). |
xs | Unterhalb aller vorherigen Steuerelemente seit der letzten Verwendung der Section-Option. |
x+n oder xp | Dasselbe wie der obere Rand des vorherigen Steuerelements (yp). |
Y angegeben | Standard für X |
yn oder ym | Rechts von allen vorherigen Steuerelementen (maximale X-Ausdehnung plus Margin). |
ys | Rechts von allen vorherigen Steuerelementen seit der letzten Verwendung der Section-Option. |
y+n oder yp | Dasselbe wie der linke Rand des vorherigen Steuerelements (xp). |
V: Variable. Verknüpft eine Variable mit einem Steuerelement. Geben Sie direkt nach dem Buchstaben V den Namen einer globalen Variable ein (oder eine lokale ByRef-Variable, die auf eine globale Variable verweist, oder [in v1.0.46.01+] eine statische Variable). vMeinEdit
beispielsweise speichert den Inhalt des Steuerelements in die Variable MeinEdit, sobald man Gui Submit verwendet. Wenn ein Steuerelement nicht eingabefähig ist (z. B. ein Text- oder GroupBox-Steuerelement), kann es dennoch hilfreich sein, ihm eine Variable zuzuordnen, 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 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 genutzt werden, um ein indirektes Gui Cancel auszulösen (aber wenn ein Label namens "Cancel" im Skript existiert, wird dieses stattdessen ausgeführt). Die Subroutine kann auf folgende interne Variablen zurückgreifen: A_Gui, A_GuiControl, A_GuiEvent, A_EventInfo und A_ThisLabel.
[v1.1.20+]: Man kann auch den Namen einer Funktion angeben, sofern dieser Name noch nicht als Label existiert. Alternativ kann via GuiControl ein Funktionsobjekt zugeordnet werden. Die Funktion kann optional die folgenden Parameter akzeptieren (gElementEreignis
hat in diesem Fall die Funktion gesetzt):
ElementEreignis(ElementHwnd, GuiEreignis, EreignisInfo, ErrLevel:="")
Die Bedeutung der Parameter hängt vom Typ des Steuerelements ab. Hinweis: Wenn man den vierten Parameter ohne Standardwert deklariert, kann die Funktion nur von Ereignissen aufgerufen werden, die vier Parameter bereitstellen.
Hinweis: Vorzeichenlose Optionen werden standardmäßig hinzugefügt; zum Beispiel bewirkt sowohl Wrap
als auch +Wrap
, dass der automatische Zeilenumbruch im Text des Steuerelements aktiviert wird. Um diese Eigenschaft hingegen wieder zu entfernen, geben Sie -Wrap
an.
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: Farbe des Textes (funktioniert nicht bei Button-Steuerelementen). Geben Sie nach dem Buchstaben C den Namen einer Farbe (siehe Farbentabelle) oder einen RGB-Wert an (mit oder ohne 0x-Präfix). Beispiele: cRed
, cFF2211
, c0xFF2211
, cDefault
.
Choose: Wählt ein einzelnes Element in einem ComboBox-, DateTime-, DropDownList-, ListBox- oder Tab-Steuerelement vorab aus. Geben Sie direkt nach dem Wort Choose
die Nummer eines Elements an. Zum Beispiel: Choose2
Disabled: Stellt das Steuerelement in einem deaktivierten Zustand dar und bewirkt, dass es weder fokussiert noch geändert werden kann. Um später die Interaktion mit diesem Steuerelement wieder zu aktivieren, nutzen 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 erfolgen, um den Startzustand zu bestimmen (0 für aktiviert, 1 für deaktiviert). In diesem Fall ist Disabled
das gleiche 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 erfolgen, um den Startzustand zu bestimmen (0 für sichtbar, 1 für versteckt). In diesem Fall ist Hidden
das gleiche wie Hidden%VarMitEins%
.
Left: Macht den Text innerhalb der verfügbaren Breite des Steuerelements linksbündig. Diese Option funktioniert nur bei folgenden Steuerelementen: Text, Edit, Button, Checkbox, Radio, UpDown, Slider, Tab, Tab2, GroupBox, DateTime.
Right: Macht den Text innerhalb der verfügbaren Breite des Steuerelements rechtsbündig. Bei einer CheckBox und einem Radio-Button bewirkt diese Option zudem, dass das Auswahlfeld selbst auf die rechte statt linke Seite des Steuerelements positioniert wird. Diese Option funktioniert nur bei folgenden Steuerelementen: Text, Edit, Button, Checkbox, Radio, UpDown, Slider, Tab, Tab2, GroupBox, DateTime, Link.
Center: Zentriert den Text des Steuerelements auf horizontaler Ebene. Diese Option funktioniert nur bei folgenden Steuerelementen: 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
an, um ein eingabefähiges Steuerelement überspringen zu lassen, wenn der Benutzer Tab zum Navigieren drückt.
Wrap: Aktiviert den automatischen Zeilenumbruch im Text des Steuerelements. Da bei nahezu allen Steuerelementen standardmäßig der automatische Zeilenumbruch aktiv ist, nutzt man in der Regel -Wrap
, um diese Option zu deaktivieren.
VScroll: Stattet das Steuerelement mit einer vertikalen Scrollleiste aus, sofern möglich.
HScroll: Stattet das Steuerelement mit einer horizontalen Scrollleiste aus, sofern möglich. Der Rest dieses Absatzes gilt nur für die ListBox. Die horizontale Scrollbreite ist standardmäßig das 3-fache der Breite der Listbox. Um eine andere Scrollbreite zu definieren, müssen Sie direkt nach dem Wort HScroll eine Zahl angeben. HScroll500
beispielsweise ermöglicht einen scrollbaren Bereich von 500 Pixeln innerhalb der ListBox. Wenn die angegebene Scrollbreite allerdings kleiner als die Breite der ListBox ist, wird keine Scrollleiste angezeigt (obwohl das bloße Vorhandensein von HScroll es überhaupt erst möglich macht, die horizontale Scrollleiste später via GuiControl, +HScroll500, MeineScrollleiste
hinzuzufügen).
BackgroundTrans: Verwendet einen transparenten Hintergrund, der jedes Steuerelement, das sich hinter einem Text-, Picture- oder GroupBox-Steuerelement befindet, durchscheinen lässt. Ein transparentes Text-Steuerelement oberhalb eines Picture-Steuerelements würde beispielsweise 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: BackgroundTrans funktioniert eventuell nicht ordnungsgemäß bei Steuerelementen innerhalb eines Tab-Steuerelements, das eine ListView enthält.
-Background: Lässt ein Steuerelement dessen Standard-Hintergrundfarbe und nicht die via Gui Color definierte Hintergrundfarbe verwenden. Diese Option wird häufig genutzt, 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 sind bereits eingerahmt und benötigen aufgrund dessen diese Option nicht. Wenn man ein bereits existierendes Steuerelement mit einem Rahmen versieht, muss die Breite und Höhe des Steuerelements eventuell um einen Pixel erweitert werden, um dessen korrekte Darstellung zu gewährleisten.
HwndAusgabeVar [v1.0.46.01+]: Speichert die HWND-Nummer (eindeutige ID) des Steuerelements in AusgabeVar, wenn diese Option in Verbindung mit Gui Add genutzt wird. Zum Beispiel: Gui, Add, Edit, vMeinEdit HwndMeinEditHwnd
. Wenn man 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() genutzt. Außerdem kann diese Nummer direkt als ahk_id-FensterTitel verwendet werden (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 das aktuelle Fenster-Design des neu erstellten Steuerelements ü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 Nummer an, um einen Style hinzuzufügen oder zu entfernen. Lässt man das Vorzeichen weg, 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 Nummer an, um einen erweiterten Style hinzuzufügen oder zu entfernen. Lässt man das Vorzeichen weg, wird der Style standardmäßig hinzugefügt. E0x200
beispielsweise fügt den WS_EX_CLIENTEDGE-Style hinzu, der Steuerelemente wie z. B. Picture mit einem abgesenkten Rahmen ausstattet. Alle anderen erweiterten Styles, die nur selten verwendet werden und aufgrund dessen hier nicht aufgelistet sind, finden Sie unter www.microsoft.com mit Suchbegriffen wie WS_EX_CLIENTEDGE.
Die folgenden Label (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 Label verwendet werden; zum Beispiel sind 2GuiEscape und 2GuiClose die Standardlabel für das Fenster Nummer 2, und MeineGuiGuiEscape und MeineGuiGuiClose die Standardlabel für das Fenster MeineGui. Mit Gui +Label kann ein benutzerdefiniertes Präfix definiert werden.
Wird gestartet, wenn das Fenster mit eine 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 durchgeführte 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 ist optional. MsgBox 4,, Wollen Sie die GUI wirklich verstecken? IfMsgBox No return true ; true = 1 }
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 keine Auswirkung. Bekannte Einschränkung: Wenn die Interaktion mit dem ersten Steuerelement im Fenster deaktiviert 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.
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:
Mithilfe von GuiSize können Steuerelemente neu positioniert und größer/kleiner gemacht werden, während der Benutzer die Größe des Fensters ändert. Um diesen Vorgang zu vereinfachen, können Sie AutoXYWH() von tmplinshi und toralf nutzen.
Beim Ändern der Fenstergröße (auch via Skript) wird GuiSize eventuell nicht sofort aufgerufen. Wie jedes Fensterereignis wird GuiSize erst aufgerufen, wenn der aktuelle Thread unterbrechbar wird. Nutzen Sie das folgende Beispiel, 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)
Wird gestartet, wenn der Benutzer mit der rechten Maustaste auf eine beliebige Stelle 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 vielen anderen GUI-Labels können mehrere GuiContextMenu-Threads zur selben Zeit aktiv sein. GuiContextMenu kann auf folgende interne Variablen zugreifen:
Menu, MeinKontext, Show, %A_GuiX%, %A_GuiY%
). Die Koordinaten sind relativ zur linken oberen Ecke des Fensters.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 wahr, wenn A_GuiEvent das Wort RightClick enthält.
Wird gestartet, wenn Dateien/Ordner während eines Drag-and-Drop-Vorgangs auf das Fenster abgelegt werden (aber wenn das Label bereits läuft, werden Drop-Ereignisse ignoriert). GuiDropFiles kann auf folgende interne Variablen zugreifen:
Mit einer parsenden Schleife können einzelne Dateien extrahiert werden; zum Beispiel:
; BEISPIEL #1: Loop, Parse, A_GuiEvent, `n { MsgBox, 4,, Datei Nummer %A_Index% ist:`n%A_LoopField%.`n`nWeiter? IfMsgBox, No, break } ; BEISPIEL #2: Nur die erste Datei extrahieren: Loop, Parse, A_GuiEvent, `n { ErsteDatei := A_LoopField break } ; BEISPIEL #3: Dateien in alphabetischer Reihenfolge durchgehen: DateiListe := A_GuiEvent Sort, DateiListe Loop, Parse, DateiListe, `n MsgBox Datei Nummer %A_Index% ist:`n%A_LoopField%.
Um das Drag-and-Drop-Feature eines Fensters 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 zum Beispiel 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 Arten von GUI-Ereignissen können via OnMessage() erkannt und verarbeitet werden. Ein Skript kann beispielsweise via Tooltip eine kontextabhängige Hilfe anzeigen, wenn der Benutzer den Mauszeiger über bestimmte Steuerelemente im Fenster bewegt. Siehe dazu das GUI-Tooltip-Beispiel.
Um anstelle des Standardfensters mit einem anderen Fenster zu agieren, 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 genutzt werden, um das obige Präfix "MeineGui:" zu vermeiden. Darüber hinaus kann das Präfix in einem GUI-Thread weggelassen werden, wenn dieser Thread mit demselben Fenster agiert, 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. Es können solange neue Fenster erstellt werden, bis alle verfügbaren Systemressourcen aufgebraucht sind.
[v1.1.04+]: Mit Gui, New können beliebig viele namenlose GUI-Fenster erstellt werden.
Ein GUI-Thread ist laut Definition jeder Thread, den eine GUI-Aktion gestartet hat. Zu den GUI-Aktionen gehört beispielsweise 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.
Wenn ein GUI-Thread gestartet wird, wird das GUI-Fenster selbst als zuletzt gefundenes Fenster für diesen Thread festgelegt. Dadurch können bei fenster- oder steuerelementspezifischen Befehlen -- z. B. WinMove, WinHide, WinSet, WinSetTitle und ControlGetFocus -- die FensterTitel- und FensterText-Parameter weggelassen werden, damit diese Befehle mit dem GUI-Fenster selbst agieren können (sogar wenn es versteckt ist).
Ein Klick auf ein Steuerelement, dessen g-Label wegen eines vorherigen Klicks noch läuft, ist unwirksam und führt dazu, dass dieses Ereignis verworfen wird. Um das zu verhindern, setzen Sie Critical auf die erste Zeile der Subroutine (allerdings werden dadurch auch andere Threads, wie z. B. das Drücken eines Hotkeys, gepuffert/hinausgezö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.
Damit mehrere Ereignisse dieselbe Subroutine ausführen können, stapeln Sie die entsprechenden Labelnamen einfach übereinander. Zum Beispiel:
GuiEscape: GuiClose: ButtonCancel: ExitApp ; Alle Label 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 ist es möglich, den Tastaturfokus jeweils auf das nächste eingabefähige Steuerelement in einem GUI-Fenster zu setzen (Steuerelemente mit deaktiviertem Tabstop-Style werden übersprungen). In welcher Reihenfolge die Steuerelemente navigiert werden, ist abhängig davon, zu welchem Zeitpunkt sie hinzugefügt wurden. Wenn das Fenster zum ersten Mal angezeigt wird, bekommt das erste eingabefähige Steuerelement mit aktiviertem Tabstop-Style (was auf die meisten zutrifft) den Tastaturfokus.
Bestimmte Steuerelemente können ein Und-Zeichen (&) enthalten, um einen Tastaturkurzbefehl zu erstellen, das im Text des Steuerelements je nach Systemeinstellungen als unterstrichenes Zeichen dargestellt wird. Um so einen 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 von einem Button, einer CheckBox oder einem Radio-Button, ist der Effekt das gleiche wie, als würde man das Steuerelement anklicken. Drückt man den Tastaturkurzbefehl von einer GroupBox oder einem Text-Steuerelement, wird der Tastaturfokus auf das erste eingabefähige Tabstop-Steuerelement gesetzt, welches danach erstellt wurde. Wenn mehrere Steuerelemente den gleichen Tastaturkurzbefehl verwenden und drückt man diesen, springt der Tastaturfokus zwischen solchen Steuerelementen abwechselnd hin und her.
Geben Sie zwei aufeinanderfolgende Und-Zeichen an, um ein direkt geschriebenes Und-Zeichen in einem der oben genannten Steuerelementen anzuzeigen. Zum Beispiel: Gui, Add, Button,, Speichern && Beenden
.
Ein GUI-Fenster verwendet als Symbol das Tray-Symbol, welches zum Zeitpunkt der Erstellung des Fensters wirksam war. Daher muss, sofern 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). Dazu verwendet man LoadPicture() und SendMessage; zum Beispiel:
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.
Verwandtes Thema: Margin (Abstände innerhalb eines Fensters).
GuiControl und GuiControlGet können genutzt werden, um mit einzelnen Steuerelementen in einem GUI-Fenster zu agieren.
Jedes GUI-Fenster kann bis zu 11000 Steuerelemente enthalten. Aber Vorsicht: Bei mehr als 5000 Steuerelementen kann es vorkommen, dass bestimmte Steuerelemente instabil werden.
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 mit der Anfrage angezeigt, ob die alte Instanz beibehalten oder mit einer neuen Instanz ersetzt werden soll, es sei denn, man überschreibt das mit der #SingleInstance-Direktive.
GuiControl, GuiControlGet, Menu, Steuerelemente, ListView, TreeView, Control, ControlGet, SplashImage, MsgBox, FileSelectFile, FileSelectFolder
Erstellt ein Popup-Fenster ähnlich wie SplashTextOn.
Gui, +AlwaysOnTop +Disabled -SysMenu +Owner ; +Owner verhindert eine Taskleistenschaltfläche. Gui, Add, Text,, Beliebiger Text. 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 solange im Leerlauf, bis der Benutzer irgendetwas macht. GuiClose: ButtonOK: Gui, Submit ; Speichert die Benutzereingaben in die entsprechenden Steuerelementvariablen. MsgBox Sie haben "%Vorname% %Nachname%" eingegeben. ExitApp
Erstellt ein Tab-Steuerelement mit mehreren Tabs, die jeweils verschiedene Steuerelemente enthalten, mit denen Sie interagieren können.
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 ; nachfolgende Steuerelemente werden nicht als Teil des Tab-Steuerelements angesehen.
Gui, Add, Button, default xm, OK ; xm positioniert die Schaltfläche in die untere linke Ecke.
Gui, Show
return
ButtonOK:
GuiClose:
GuiEscape:
Gui, Submit ; Speichert die Inhalte der Steuerelemente in ihre zugeordneten Variablen.
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 ; Ansonsten wurde ein Doppelklick auf einen Listeneintrag gemacht, also wie OK-Drücken behandeln ; und zum nächsten Label übergehen. ButtonOK: GuiControlGet, MeineListBox ; Ermittelt die aktuelle Auswahl in der ListBox. MsgBox, 4,, Wollen Sie die folgende Datei wirklich öffnen?`n`n%MeineListBox% IfMsgBox, No return ; Ansonsten versuchen zu starten: Run, %MeineListBox%,, UseErrorLevel if (ErrorLevel = "ERROR") MsgBox Die angegebene Datei konnte nicht ausgeführt werden. Scheinbar fehlt ein passendes Programm dafür. return GuiClose: GuiEscape: ExitApp
Zeigt eine kontextabhängige Hilfe an (via Tooltip), wenn man 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 den unteren ToolTip-Befehl leer. AktStrlmnt := A_GuiControl if (AktStrlmnt != VorStrlmnt and not InStr(AktStrlmnt, " ")) { ToolTip ; Schließt alle offenen Tooltips. SetTimer, ZeigeToolTip, 1000 VorStrlmnt := AktStrlmnt } return ZeigeToolTip: SetTimer, ZeigeToolTip, Off ToolTip % %AktStrlmnt%_TT ; Das Prozentzeichen am Anfang erzwingt einen Ausdruck. SetTimer, EntferneToolTip, 3000 return EntferneToolTip: SetTimer, EntferneToolTip, Off ToolTip return } GuiClose: ExitApp
Erstellt eine Bildschirmanzeige (OSD) mittels transparenten Fensters.
UnsichtbareFarbe := "EEAA99" ; Kann eine beliebige RGB-Farbe sein (wird weiter unten transparent gemacht). Gui +LastFound +AlwaysOnTop -Caption +ToolWindow ; +ToolWindow entfernt die Taskleistenschaltfläche und die Möglichkeit, via ALT+TAB angesteuert zu werden. Gui, Color, %UnsichtbareFarbe% Gui, Font, s32 ; Setzt eine große Schriftgröße (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, AktualisiereOSD, 200 Gosub, AktualisiereOSD ; Führt die Aktualisierung sofort durch, anstatt auf den Timer zu warten. Gui, Show, x0 y400 NoActivate ; NoActivate verhindert, dass ein anderes Fenster seinen Aktivzustand verliert. return AktualisiereOSD: 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 ; Speichert die Werte der Optionsfelder. if (Option = 1) ; Bild mit aktueller Größe anzeigen. { Breite := 0 Höhe := 0 } else ; Zweites Optionsfeld ausgewählt: Größe des Bildes 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..., DateiSpeichernAls Menu, Dateimenü, Add ; Trennlinie. Menu, Dateimenü, Add, E&xit, DateiBeenden Menu, Hilfsmenü, Add, &Über, HilfeÜber ; Fügt die Untermenüs in die Menüleiste ein: Menu, MeineMenüleiste, Add, &Datei, :Dateimenü Menu, MeineMenüleiste, Add, &?, :Hilfsmenü ; Heftet die Menüleiste an das Fenster an: Gui, Menu, MeineMenüleiste ; Erstellt das Haupt-Eingabefeld und zeigt das Fenster an: Gui, +Resize ; Macht die Größe des Fensters veränderbar. 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 ; Zwingt den Benutzer, 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% ; Liest den Inhalt der Datei und speichert ihn in die Variable. if ErrorLevel { MsgBox "%AusgewählteDateiName%" konnte nicht geöffnet werden. return } GuiControl,, HauptEdit, %HauptEdit% ; Fügt den Text in das Steuerelement ein. AktuelleDateiName := AusgewählteDateiName Gui, Show,, %AktuelleDateiName% ; Zeigt den Dateinamen in der Titelleiste an. return DateiSpeichern: if not AktuelleDateiName ; Aktuell keinen Dateinamen ausgewählt, daher "Speichern unter...". Goto DateiSpeichernAls Gosub AktuelleDateiSpeichern return DateiSpeichernAls: Gui +OwnDialogs ; Zwingt den Benutzer, 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 ; Ermittelt den Inhalt des Eingabefeldes. FileAppend, %HauptEdit%, %AktuelleDateiName% ; Speichert den Inhalt in eine Datei. ; Bei Erfolg den Dateinamen in der Titelleiste anzeigen (falls es mit DateiSpeichernAls aufgerufen wurde): Gui, Show,, %AktuelleDateiName% return HilfeÜber: Gui, Über:+owner1 ; Macht das Über-Fenster zum Unterfenster vom Hauptfenster (Gui Nr. 1). Gui +Disabled ; Deaktiviert die Interaktion mit dem Hauptfenster. Gui, Über:Add, Text,, Beliebiger Text. Gui, Über:Add, Button, Default, OK Gui, Über:Show return ÜberButtonOK: ; Dieser Abschnitt gilt für das Über-Fenster oben. ÜberGuiClose: ÜberGuiEscape: Gui, 1:-Disabled ; Reaktiviert die Interaktion mit dem Hauptfenster (muss vor dem nächsten Schritt erfolgen). Gui Destroy ; Entfernt das Über-Fenster. 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 ; Ansonsten wurde die Größe des Fensters geändert oder maximiert. Die Größe des Eingabefeldes muss entsprechend angepasst werden. NeueBreite := A_GuiWidth - 20 NeueHöhe := A_GuiHeight - 20 GuiControl, Move, HauptEdit, W%NeueBreite% H%NeueHöhe% return DateiBeenden: ; Benutzer hat "Exit" im Dateimenü ausgewählt. GuiClose: ; Benutzer hat das Fenster geschlossen. ExitApp