Menu

Erstellt, löscht, ändert und zeigt Menüs und Menüpunkte. Ändert das Infobereichssymbol und sein ToolTip. Kontrolliert, ob das Hauptfenster eines kompilierten Skripts geöffnet werden kann.

Menu, Menüname, Befehl [, P3, P4, P5]

Parameter

Menüname

Kann TRAY oder der Name eines benutzerdefinierten Menüs sein. Ein benutzerdefiniertes Menü steht automatisch zur Verfügung, nachdem man das erste Mal den Add-Befehl in Verbindung mit dem Namen des Menüs verwendet hat. Zum Beispiel: Menu, MeinMenü, Add, Element1.

Einmal erstellt, kann ein benutzerdefiniertes Menü mit dem Show-Befehl angezeigt werden. Mit dem Add-Befehl kann es zudem als Untermenü an andere Menüs angefügt werden.

Befehl, P3, P4, P5

Diese 4 Parameter sind voneinander abhängig. Siehe untere Liste, welche Kombinationen möglich sind.

Menüpunktname

Name oder Position eines Menüpunkts. Es gelten einige allgemeine Regeln für diesen Parameter, der bei vielen Unterbefehlen zu finden ist:

Um einen Buchstaben im Namen eines Menüpunktnamens zu unterstreichen, muss diesem Buchstaben ein Und-Zeichen (&) vorangestellt werden. Sobald das Menü angezeigt wird, kann man so ein Menüpunkt durch Drücken der entsprechenden Taste aktivieren. Um ein literales Und-Zeichen anzuzeigen, müssen zwei aufeinanderfolgende Und-Zeichen wie folgt angegeben werden: Save && Exit

Beim Verweisen auf ein vorhandenes Menü oder Menüpunkt spielt die Groß- und Kleinschreibung keine Rolle, aber das Und-Zeichen muss mit enthalten sein. Zum Beispiel: &Open

[v1.1.23+]: Wenn ein vorhandener Menüpunkt anhand seiner Position im Menü identifiziert werden soll, dann schreibe die Position des Menüpunkts, gefolgt von einem Und-Zeichen. Zum Beispiel wäre 1& der erste Menüpunkt.

Einfügen oder Ändern von Menüpunkten

Add [, Menüpunktname, Label-oder-Untermenü, Optionen]: Dieser Befehl ist für mehrere Zwecke gedacht - er kann einen Menüpunkt einfügen, einen Menüpunkt mit einem neuen Untermenü oder Label aktualisieren, oder einen normalen Menüpunkt in ein Untermenü umwandeln (oder umgekehrt). Wenn Menüpunktname noch nicht existiert, wird er in das Menü eingefügt. Ansonsten wird Menüpunktname mit dem neu angegebenen Label-oder-Untermenü aktualisiert.

Zum Einfügen einer Menü-Trennlinie müssen alle drei Parameter weggelassen werden.

Die Label-Subroutine wird als neuer Thread gestartet, wenn der Benutzer den Menüpunkt anklickt (vergleichbar mit Gosub und Hotkey-Subroutinen). Fehlt Label-oder-Untermenü, wird Menüpunktname sowohl als Labelname als auch als Menüpunktname verwendet.

[v1.1.20+]: Wenn es nicht der Name eines vorhandenen Labels ist, kann Label-oder-Untermenü der Name einer Funktion sein, oder ein einzelner Variablenverweis mit einem Funktionsobjekt. Zum Beispiel %funkobj% oder % funkobj. Andere Ausdrücke, die Objekte zurückgeben, werden zurzeit nicht unterstützt. Optional kann die Funktion wie folgt Parameter definieren:

Funktionsname(Menüpunktname, Menüpunktposition, Menüname)

Wenn Menüpunktname ein Untermenü werden soll - also ein Menüpunkt, der ein neues Menü öffnet - muss in Label-oder-Untermenü ein Doppelpunkt und der Menüname eines vorhandenen benutzerdefinierten Menüs angegeben werden. Zum Beispiel:

Menu, MeinUntermenü, Add, Element1
Menu, Tray, Add, Dieser Menüpunkt ist ein Untermenü, :MeinUntermenü

Sofern vorhanden, muss Optionen eine Liste mit einer oder mehreren Optionen sein, die jeweils mit einem Leer- oder Tabulatorzeichen voneinander getrennt sind:

Pn Ersetze n mit der Thread-Priorität des Menüpunktes, z. B. P1. Fehlt diese Option beim Einfügen eines Menüpunktes, wird die Priorität den Standardwert von 0 haben. Fehlt er beim Aktualisieren eines Menüpunktes, wird die Priorität des Menüpunktes beibehalten. Verwende eine dezimale (nicht hexadezimale) Zahl als Priorität.
+Radio [v1.1.23+]: Beim Markieren des Menüpunktes wird ein kleiner Kreis anstelle eines Häkchens verwendet.
+Right [v1.1.23+]: Der Menüpunkt wird innerhalb der Menüleiste nach rechts ausgerichtet. Diese Option funktioniert nur bei Menüleisten, nicht bei Popup-Menüs oder Untermenüs.
+Break [v1.1.23+]: Der Menüpunkt beginnt eine neue Spalte in einem Popup-Menü.
+BarBreak [v1.1.23+]: Das gleiche wie oben, aber mit Trennlinien zwischen den Spalten.

Das Pluszeichen (+) ist optional und kann mit einem Minuszeichen (-) ersetzt werden, um die Option zu entfernen, wie z. B. -Radio. Bei den Optionen ist die Groß- und Kleinschreibung egal.

Wenn man die Optionen eines vorhandenen Menüpunktes ändern will, aber nicht sein Label oder Untermenü, dann kann man den Label-oder-Untermenü-Parameter einfach weglassen.

Insert [, VorhandenerMenüpunktname, NeuerMenüpunktname, Label-oder-Untermenü, Optionen] [v1.1.23+]: Fügt einen neuen Menüpunkt vor dem angegebenen Menüpunkt ein. Die Verwendung erfolgt wie bei Add (oben), außer dass der zusätzliche VorhandenerMenüpunktname-Parameter der Name eines existierenden Menüpunktes oder eine Position& zwischen 1 und der aktuellen Anzahl von Menüpunkten plus 1 ist. Menüpunkte kann man auch anfügen, indem man VorhandenerMenüpunktname weglässt (also wenn man zwei aufeinanderfolgende Kommas schreibt). Im Gegensatz zu Add erstellt Insert einen neuen Menüpunkt, selbst wenn NeuerMenüpunktname bereits als Menüpunkt existiert.

Delete [, Menüpunktname]: Löscht Menüpunktname aus dem Menü. Voreingestellte Menüpunkte wie Exit können nicht gelöscht werden (zumindest nicht einzeln). Das Löschen des Standard-Menüpunktes ist das gleiche wie, als hätte man die NoDefault-Option angegeben. Fehlt Menüpunktname, wird das gesamte Menüname-Menü gelöscht, sowie alle Menüpunkte in anderen Menüs, die Menüname als Untermenü verwenden. Das Löschen eines Menüs bewirkt zudem, dass das aktuelle Win32-Menü von seinen übergeordneten Menüs und Untermenüs zerstört wird, um später bei Bedarf neu erstellt werden zu können.

DeleteAll: Löscht alle benutzerdefinierten Menüpunkte aus dem Menü, und hinterlässt es als leeres Menü, sofern es keine voreingestellten Menüpunkte enthält (siehe unten). Im Gegensatz zu einem gelöschten Menü via Delete-Befehl (siehe oben), bleibt ein leeres Menü weiterhin bestehen; andere Menüs, die dieses leere Menü als Untermenü verwenden, werden demzufolge solche Untermenüs beibehalten. Allerdings werden die aktuellen Win32-Menüs von diesem Menü und seinen übergeordneten Menüs und Untermenüs zerstört, um später bei Bedarf neu erstellt werden zu können.

Rename, Menüpunktname [, NeuerName]: Benennt Menüpunktname in NeuerName um (wenn NeuerName leer ist, wird Menüpunktname in eine Trennlinie umgewandelt). Das aktuelle Ziel-Label oder Untermenü des Menüpunkts bleibt unverändert. [v1.1.23+]: Eine Trennlinie kann man in einen normalen Menüpunkt umwandeln, indem man die Position& der Trennlinie und einen nicht-leeren NeuerName angibt, und dann den Add-Befehl verwendet, um dem Menüpunkt einen Label oder Untermenü zu geben.

Check, Menüpunktname: Setzt ein sichtbares Häkchen neben Menüpunktname (wenn noch keines da ist).

Uncheck, Menüpunktname: Entfernt das Häkchen (falls vorhanden) von Menüpunktname.

ToggleCheck, Menüpunktname: Fügt ein Häkchen hinzu, wenn dort keines war; ansonsten wird es entfernt.

Enable, Menüpunktname: Erlaubt dem Benutzer, den Menüpunktname wieder anzuklicken, falls er zuvor deaktiviert (ergraut) war.

Disable, Menüpunktname: Zeigt den Menüpunktname in einer grauen Farbe an, um kenntlich zu machen, dass der Benutzer ihn nicht anklicken kann.

ToggleEnable, Menüpunktname: Deaktiviert Menüpunktname, falls er zuvor aktiviert war; ansonsten wird er aktiviert.

Default [, Menüpunktname]: Macht den Menüpunktname zum Standard-Menüpunkt und stellt ihn in fetter Schrift dar (das Setzen des Standard-Menüpunkts bei Menüs, die nicht TRAY sind, ist rein kosmetischer Natur). Wenn der Benutzer das Infobereichssymbol doppelt anklickt, wird der Standard-Menüpunkt gestartet. Wenn es keinen Standard-Menüpunkt gibt, hat ein Doppelklick keine Wirkung. Das Weglassen von Menüpunktname ist das gleiche wie, als hätte man die NoDefault-Option angegeben.

NoDefault: Beim Infobereichsmenü: Stellt den voreingestellten Standard-Menüpunkt wieder her - bei unkompilierten Skripten ist das OPEN und bei kompilierten Skripten nichts (außer wenn die MainWindow-Option aktiv ist). Wenn der OPEN-Menüpunkt durch vorheriges Verwenden des NoStandard-Befehls nicht vorhanden ist, wird es keinen Standard-Menüpunkt geben; ein Doppelklick auf das Infobereichssymbol wird demzufolge keine Wirkung haben. Bei Menüs, die nicht TRAY sind: Alle vorhandenen Standard-Menüpunkte werden nicht mehr in fetter Schrift dargestellt.

Standard: Fügt die voreingestellten Menüpunkte an das untere Ende des Menüs ein (sofern sie nicht bereits vorhanden sind). Dieser Befehl kann in Verbindung mit einem Infobereichsmenü oder jedem anderen Menü verwendet werden.

NoStandard: Entfernt alle voreingestellten (nicht benutzerdefinierten) Menüpunkte aus dem Infobereichsmenü (sofern sie vorhanden sind).

Icon, Menüpunktname, Dateiname [, Symbolnummer, Symbolbreite]: Setzt das Symbol für Menüpunktname. Dateiname kann entweder eine Symboldatei sein, oder ein Bild in einem Format, das von AutoHotkey unterstützt wird. Um anstelle der ersten Symbolgruppe eine andere aus der Datei zu verwenden, muss ihre Nummer bei Symbolnummer angegeben werden (fehlt dieser Parameter, gilt standardmäßig 1). Wenn der Symbolnummer-Parameter negativ ist, wird sein absoluter Wert als Ressourcen-ID eines Symbols innerhalb einer ausführbaren Datei vermutet. Die gewünschte Breite des Symbols kann in Symbolbreite angegeben werden. Wenn die angegebene Symbolgruppe in Symbolnummer mehrere Symbolgrößen enthält, wird das Symbol auf die naheliegendste Größe skaliert. Im Beispiel-Abschnitt findest du Anwendungsbeispiele.

Derzeit ist es notwendig, die tatsächliche Größe anzugeben, wenn die Transparenz des Symbols in Windows Vista oder höher erhalten bleiben soll. Zum Beispiel:

Menu, Menüname, Icon, Menüpunktname, Dateiname.png,, 0

Bekannte Einschränkung: In Windows XP und höher werden Symbole auf GUI-Menüleisten falsch positioniert.

[v1.1.23+]: Man kann ein Bitmap- oder Symbol-Handle anstelle eines Dateinamens verwenden. Zum Beispiel HBITMAP:%handle%.

NoIcon, Menüpunktname: Entfernt das Symbol von Menüpunktname, sofern vorhanden.

Ändern des Infobereichssymbols oder ToolTips (Menüname muss TRAY sein)

Icon [, Dateiname, Symbolnummer, 1]: Ersetzt das Skriptsymbol mit eines der Symbole aus Dateiname. Folgende Dateitypen werden unterstützt: ICO, CUR, ANI, EXE, DLL, CPL, SCR und andere Typen, die Symbolressourcen enthalten. Um anstelle der ersten Symbolgruppe eine andere aus der Datei zu verwenden, muss ihre Nummer bei Symbolnummer angegeben werden (fehlt dieser Parameter, gilt standardmäßig 1). Zum Beispiel würde 2 das Standardsymbol aus der zweiten Symbolgruppe laden. Wenn der Symbolnummer-Parameter negativ ist, wird sein absoluter Wert als Ressourcen-ID eines Symbols innerhalb einer ausführbaren Datei vermutet. Mit einem Sternchen (*) in Dateiname wird das Standard-Icon wiederhergestellt.

Der letzte Parameter: Verwende eine 1 im letzten Parameter, um das Symbol einzufrieren, oder eine 0, um diesen Zustand wieder aufzuheben (oder lasse ihn leer, um den aktuellen Status beizubehalten). Wenn das Symbol eingefroren wurde, kann es von Pause und Suspend nicht geändert werden. Hinweis: Um das aktuelle Symbol einzufrieren bzw. diesen Zustand aufzuheben, muss eine 1 oder 0 wie folgt verwendet werden: Menu, Tray, Icon,,, 1.

Das Ändern des Infobereichssymbols ändert auch das angezeigte Symbol in InputBox, Progress und danach erstellte GUI-Fenster. Kompilierte Skripte sind davon auch betroffen, selbst wenn ein benutzerdefiniertes Symbol beim Kompilieren angegeben wurde. Hinweis: Das Ändern des Symbols wird das Infobereichssymbol nicht sichtbar machen, wenn es zuvor mit Mitteln wie #NoTrayIcon versteckt wurde; um das zu tun, verwende Menu, Tray, Icon (ohne Parameter).

Es können leichte Verformungen auftreten, wenn Infobereichssymbole aus Dateitypen geladen werden, die keine ICO-Dateien sind. Dieses Problem gilt besonders bei 16x16-Symbolen. Um das zu verhindern, muss das gewünschte Symbol in eine ICO-Datei gespeichert werden.

Es gibt einige Symbole innerhalb der DLL- und CPL-Systemdateien, die nützlich sein könnten. Zum Beispiel: Menu, Tray, Icon, Shell32.dll, 174.

Die Built-in-Variablen A_IconNumber und A_IconFile enthalten die Nummer und Namen (mit vollständigen Pfad) des aktuellen Symbols (beide sind leer, wenn das Standardsymbol verwendet wird).

[v1.1.23+]: Man kann ein Bitmap- oder Symbol-Handle anstelle eines Dateinamens verwenden. Zum Beispiel HBITMAP:%handle%.

Icon (ohne Parameter): Erstellt das Infobereichsymbol, sofern es noch nicht vorhanden ist. Dieser Unterbefehl wird #NoTrayIcon überschreiben, wenn diese Direktive auch im Skript vorhanden ist.

NoIcon: Entfernt das Infobereichssymbol, sofern vorhanden. Verwendet man diesen Befehl ganz oben im Skript, könnte das Infobereichssymbol beim Starten des Skripts kurz sichtbar sein. Um das zu verhindern, muss #NoTrayIcon stattdessen verwendet werden. Die Built-in-Variable A_IconHidden enthält eine 1, wenn das Infobereichssymbol zurzeit versteckt ist, oder ansonsten eine 0.

Tip [, Text]: Ändert den ToolTip des Infobereichssymbols - so eins wird angezeigt, wenn sich der Mauszeiger darüber befindet. Um ein mehrzeiliges Tooltip zu erstellen, muss man zwischen jeder Zeile das Zeilenumbruchszeichen (`n) verwenden, z. B. Zeile1`nZeile2. Es werden nur die ersten 127 Zeichen des Text-Parameters angezeigt, außerdem wird der Text beim ersten Tabulatorzeichen, falls vorhanden, abgeschnitten. Fehlt der Text-Parameter, wird der Standardtext des ToolTips wiederhergestellt. Die Built-in-Variable A_IconTip enthält den aktuellen Text des ToolTips (sie ist leer, wenn der Standardtext verwendet wird).

Verschiedene Befehle

Show [, X, Y]: Zeigt den Menüname an, so dass der Benutzer ein Menüpunkt mit Pfeiltasten, Tastenkürzel (unterstrichene Buchstaben) oder der Maus auswählen kann. Mit Ausnahme der GUI-Menüleiste kann jedes Menü, einschließlich des Infobereichsmenüs, angezeigt werden. Fehlt sowohl der X- als auch Y-Parameter, wird das Menü bei der aktuellen Position des Mauszeigers angezeigt. Fehlt nur einer dieser Parameter, wird stattdessen die Position des Mauszeigers verwendet. Die Koordinaten sind relativ zum aktiven Fenster. Verwende davor "CoordMode, Menu", um sie relativ zum ganzen Bildschirm zu machen.

Color, Farbwert [, Single]: Setzt die Hintergrundfarbe des Menüs auf den angegebenen Farbwert, der entweder einer der 16 primären HTML-Farbnamen oder ein 6-stelliger RGB-Wert sein kann (siehe Farbtabelle). Lass den Farbwert-Parameter leer (oder verwende das Wort Default), um die Standardfarbe des Menüs wiederherzustellen. Fehlt das Wort Single im nächsten Parameter, werden auch die Hintergrundfarben seiner Untermenüs geändert.

Click, Klickanzahl: Verwende eine 1 bei Klickanzahl, damit der Standard-Menüpunkt des Infobereichsmenüs mit einem einzelnen Klick aktiviert werden kann. Verwende eine 2 bei Klickanzahl, um das Standardverhalten wiederherzustellen (Doppelklick). Zum Beispiel: Menu, Tray, Click, 1.

MainWindow: Dieser Befehl funktioniert nur bei kompilierten Skripten. Dieser Befehl macht es möglich, dass das Hauptfenster des Skripts über das Infobereichssymbol geöffnet werden kann (standardmäßig nicht möglich). Er aktiviert außerdem die Menüpunkte im View-Menü des Hauptfensters, wie z. B. "Lines most recently executed", das den Quellcode des Skripts und andere Informationen anzeigt. Menüname muss TRAY sein.

NoMainWindow (Standard): Dieser Befehl funktioniert nur bei kompilierten Skripten. Er stellt das Standardverhalten des Skripts wieder her - das heißt, dass er das Öffnen des Hauptfensters verhindert. Auch wenn diese Option aktiviert ist, kann das Hauptfenster weiterhin durch folgende Befehle geöffnet werden, sofern sie beim Ausführen des Skripts erreicht werden: ListLines, ListVars, ListHotkeys und KeyHistory. Menüname muss TRAY sein.

UseErrorLevel [, off]: Wenn diese Option nie im Skript vorkommt, gilt standardmäßig OFF. Die OFF-Einstellung zeigt ein Dialogfenster an und beendet den aktuellen Thread, wann immer der Menu-Befehl einen Fehler erzeugt. Verwende Menu, Tray, UseErrorLevel, um das Dialogfenster und Beenden des Threads zu verhindern; stattdessen wird ErrorLevel bei Misserfolg auf 1 und bei Erfolg auf 0 gesetzt. Um diese Option wieder zu deaktivieren, muss OFF im nächsten Parameter angegeben werden. Diese Einstellung ist global - das heißt, dass sie alle Menüs beeinflusst, nicht nur Menüname.

Win32-Menüs

Beim Einfügen oder Modifizieren von Menüpunkten werden ihre Namen und Eigenschaften vom Menu-Befehl aufgezeichnet, allerdings wird das eigentliche Win32-Menü nicht sofort konstruiert. Dies geschieht immer dann, wenn das Menü oder sein übergeordnetes Menü mit einem GUI verbunden wird oder wenn es angezeigt wird, entweder zum ersten Mal oder wenn das Menü seit seiner letzten Anzeige "zerstört" wurde. Folgende Punkte können dieses Win32-Menü zerstören, einschließlich seiner übergeordneten Menüs und Untermenüs:

Jegliche Modifikationen am Menü, die direkt mittels Win32-API-Aufrufen durchgeführt werden, gelten nur für die aktuelle "Instanz" des Menüs, und gehen verloren, wenn das Menü zerstört wird.

Jeder Menüpunkt bekommt eine ID, wenn er das erste Mal in das Menü eingefügt wird. Skripte können sich nicht auf ein Menüpunkt mit einer bestimmten ID verlassen, aber sie können die ID eines Menüpunktes via GetMenuItemID abrufen, wie im MenuGetHandle-Beispiel gezeigt. Diese ID kann nicht in Verbindung mit dem Menu-Befehl verwendet werden, sondern nur in Verbindung mit den Win32-Funktionen.

Bemerkungen

Die Namen der Menüs und Menüpunkte können bis zu 260 Zeichen lang sein.

Mit Menu, Menüname, Add (ohne den restlichen Parametern) können Trennlinien in das Menü eingefügt werden. Um Trennlinien einzeln löschen zu können, solltest du sie anhand ihrer Position im Menü identifizieren (benötigt v1.1.23+). Zum Beispiel Menu, Menüname, Delete, 3&, wenn zwei Menüpunkte vor der Trennlinie sind. Alternativ kannst du Menu, Menüname, DeleteAll verwenden und dann deine benutzerdefinierten Menüpunkte neu einfügen.

Neue Menüpunkte werden immer am unteren Ende des Menüs eingefügt. Beim Infobereichsmenü: Wenn deine Menüpunkte vor den voreingestellten Menüpunkten erscheinen sollen (nachdem du deine eigenen Menüpunkte eingefügt hast), musst du Menu, Tray, NoStandard und dann Menu, Tray, Standard ausführen.

Es ist kein Menu-Unterbefehl in der Lage, voreingestellte Menüpunkte wie "Pause Script" und "Suspend Hotkeys" einzeln zu bearbeiten.

Ein Menü, das komplett leer ist - z. B. via Menu, MeinMenü, DeleteAll - kann nicht angezeigt werden. Wenn das Infobereichsmenü leer ist, wird das Anklicken des Infobereichssymbols keine Wirkung haben (in solchen Fällen ist es üblicherweise besser, #NoTrayIcon zu verwenden).

Wenn die Subroutine des Menüpunkts bereits läuft und der Benutzer diesen Menüpunkt wieder auswählt, wird ein neuer Thread erstellt, um die gleiche Subroutine nochmals auszuführen, und der vorherige Thread unterbrochen. Um solche Ereignisse stattdessen für später zwischenzuspeichern, musst du Critical in der ersten Zeile der Subroutine angeben (allerdings wird das auch andere Threads zwischenspeichern bzw. verzögern, wie z. B. das Drücken eines Hotkeys).

Wann immer eine Subroutine über einen Menüpunkt gestartet wird, gelten zu Beginn die Standardeinstellungen bei Befehlen wie SendMode. Diese Standardeinstellungen können im automatischen Ausführungsbereich geändert werden.

Die Built-in-Variablen A_ThisMenuItem und A_ThisMenuItemPos enthalten den Namen und die Position des benutzerdefinierten Menüpunkts, der zuletzt vom Benutzer ausgewählt wurde (sie sind leer, wenn kein Menüpunkt ausgewählt wurde). Außerdem ist A_ThisMenu der Name des Menüs, in dem A_ThisMenuItem ausgewählt wurde. Diese Variablen sind nützlich, wenn man ein Menü erstellt, dessen Inhalte nicht immer gleich sind. In so einem Fall empfiehlt es sich, alle Menüpunkte auf das gleiche Label verweisen und dieses Label auf die oben genannten Variablen zurückgreifen zu lassen, um die zu ergreifenden Maßnahmen zu bestimmen.

Mit der #Persistent-Direktive kann ein Skript ohne Hotkey und GUI aufrecht erhalten werden - wie z. B. ein Skript, das nur benutzerdefinierte Menüs oder Menüpunkte enthält.

Siehe auch

GUI, Threads, Thread, Critical, #NoTrayIcon, Gosub, Return, SetTimer, #Persistent

Beispiele

; BEISPIEL #1: Dieses Skript zeigt, wie ein neuer Menüpunkt an das Ende des Infobereichsmenüs eingefügt werden kann.

#Persistent  ; Hält das Skript aufrecht, bis der Benutzer es beendet.
Menu, Tray, Add  ; Erstellt eine Trennlinie.
Menu, Tray, Add, Element1, MenuHandler  ; Erstellt einen neuen Menüpunkt.
return

MenuHandler:
MsgBox Sie haben %A_ThisMenuItem% im Menü %A_ThisMenu% ausgewählt.
return

 

; BEISPIEL #2: Dieses Skript zeigt, wie ein aufklappbares Menü erstellt werden kann, das angezeigt werden soll, wenn der Benutzer WIN+Z drückt.

; Erstellt ein aufklappbares Menü durch Hinzufügen von Menüpunkten.
Menu, MeinMenü, Add, Element1, MenuHandler
Menu, MeinMenü, Add, Element2, MenuHandler
Menu, MeinMenü, Add  ; Fügt eine Trennlinie ein.

; Erstellt ein weiteres Menü, das als Untermenü für das obige Menü dienen soll.
Menu, Submenu1, Add, Element1, MenuHandler
Menu, Submenu1, Add, Element2, MenuHandler

; Erstellt ein Untermenü im ersten Menü (mit einem nach rechts gerichteten Pfeil). Sobald der Benutzer dieses Untermenü auswählt, wird das zweite Menü angezeigt.
Menu, MeinMenü, Add, Mein Untermenü, :Submenu1

Menu, MeinMenü, Add  ; Fügt eine Trennlinie unterhalb des Untermenüs ein.
Menu, MeinMenü, Add, Element3, MenuHandler  ; Fügt einen weiteren Menüpunkt unterhalb des Untermenüs ein.
return ; Ende des automatischen Ausführungsbereichs.

MenuHandler:
MsgBox Sie haben %A_ThisMenuItem% im Menü %A_ThisMenu% ausgewählt.
return

#z::Menu, MeinMenü, Show  ; Drücke WIN+Z, um das Menü anzuzeigen.

 

; BEISPIEL #3: Dieses Skript zeigt einige der verschiedenen Menu-Befehle.

#Persistent
#SingleInstance
Menu, Tray, Add ; Trennlinie
Menu, Tray, Add, TestToggle&Check

Menu, Tray, Add, TestToggleEnable
Menu, Tray, Add, TestDefault
Menu, Tray, Add, TestStandard
Menu, Tray, Add, TestDelete
Menu, Tray, Add, TestDeleteAll
Menu, Tray, Add, TestRename
Menu, Tray, Add, Test
return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

TestToggle&Check:

Menu, Tray, ToggleCheck, TestToggle&Check

Menu, Tray, Enable, TestToggleEnable ; Aktiviert auch den nächsten Test, da es die Deaktivierung von sich selbst nicht rückgängig machen kann.
Menu, Tray, Add, TestDelete ; Das gleiche wie oben.
return

TestToggleEnable:
Menu, Tray, ToggleEnable, TestToggleEnable
return

TestDefault:
if default = TestDefault
{
    Menu, Tray, NoDefault
    default =
}
else
{
    Menu, Tray, Default, TestDefault
    default = TestDefault
}
return

TestStandard:
if standard <> n
{
    Menu, Tray, NoStandard
    standard = n
}
else
{
    Menu, Tray, Standard
    standard = y
}
return

TestDelete:
Menu, Tray, delete, TestDelete
return

TestDeleteAll:
Menu, Tray, DeleteAll
return

TestRename:
if Neuname <> renamed
{
    Altname = TestRename
    Neuname = renamed
}
else
{
    Altname = renamed
    Neuname = TestRename
}
Menu, Tray, rename, %Altname%, %Neuname%
return

Test:
MsgBox Sie haben %A_ThisMenuItem% im Menü %A_ThisMenu% ausgewählt.
return
; BEISPIEL #4: Dieses Skript zeigt, wie Symbole in seinen Menüpunkten eingefügt werden können.
Menu, Dateimenü, Add, Skript-Symbol, MenuHandler
Menu, Dateimenü, Add, Sperren-Symbol, MenuHandler
Menu, Dateimenü, Add, Pause-Symbol, MenuHandler
Menu, Dateimenü, Icon, Skript-Symbol, %A_AhkPath%, 2 ; Verwendet die zweite Symbolgruppe aus der Datei.
Menu, Dateimenü, Icon, Sperren-Symbol, %A_AhkPath%, -206 ; Verwendet das Symbol mit der Ressource-ID 206.
Menu, Dateimenü, Icon, Pause-Symbol, %A_AhkPath%, -207 ; Verwendet das Symbol mit der Ressource-ID 207.
Menu, MeineMenüleiste, Add, &Datei, :Dateimenü
Gui, Menu, MeineMenüleiste
Gui, Add, Button, gExit, Beendet dieses Beispiel
Gui, Show
MenuHandler:
Return

Exit:
ExitApp