Menu

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

Menu, Menüname, Unterbefehl , Wert1, Wert2, Wert3, Wert4

Der Menüname-Parameter 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-Unterbefehl in Verbindung mit dem Namen des Menüs verwendet hat. Zum Beispiel: Menu, MeinMenü, Add, Menüpunkt1. Einmal erstellt, kann ein benutzerdefiniertes Menü mit dem Show-Unterbefehl angezeigt werden. Mit dem Add-Unterbefehl kann es zudem als Untermenü an andere Menüs angefügt werden.

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

Inhaltsverzeichnis

Unterbefehle

Geben Sie für Unterbefehl Folgendes an:

Add

Fügt einen Menüpunkt hinzu, aktualisiert einen Menüpunkt mit einem neuen Untermenü oder Label, oder wandelt einen normalen Menüpunkt in ein Untermenü um (oder umgekehrt).

Menu, Menüname, Add , Menüpunktname, LabelOderUntermenü, Optionen

Dieser Unterbefehl ist für mehrere Zwecke gedacht. Menüpunktname ist der Name oder die Position eines Menüpunkts (siehe Menüpunktname, um mehr zu erfahren). Wenn Menüpunktname noch nicht existiert, wird er in das Menü eingefügt. Ansonsten wird Menüpunktname mit dem neu angegebenen LabelOderUntermenü aktualisiert.

Um eine Trennlinie in das Menü einzufügen, lässt man alle drei Parameter weg.

Die Label-Subroutine wird als neuer Thread gestartet, wenn der Benutzer den Menüpunkt anklickt (vergleichbar mit Gosub und Hotkey-Subroutinen). Fehlt LabelOderUntermenü, 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 LabelOderUntermenü der Name einer Funktion sein, oder eine einzelne Variablenreferenz 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 LabelOderUntermenü ein Doppelpunkt und der Menüname eines vorhandenen benutzerdefinierten Menüs angegeben werden. Zum Beispiel:

Menu, MeinUntermenü, Add, Menüpunkt1
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 Ersetzen Sie 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. Verwenden Sie 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 der LabelOderUntermenü-Parameter weggelassen wird, können die Optionen eines vorhandenen Menüpunktes geändert werden, ohne dessen Label oder Untermenü zu beeinflussen.

Insert [v1.1.23+]

Fügt einen neuen Menüpunkt vor einem bestimmten Menüpunkt ein.

Menu, Menüname, Insert , Menüpunktname, DavorEinzufügenderMenüpunkt, LabelOderUntermenü, Optionen

Die Verwendung ist identisch zum Add-Unterbefehl oben, außer dass Menüpunktname immer der Name oder die Position eines existierenden Menüpunkts (siehe Menüpunktname, um mehr zu erfahren) ist und dass DavorEinzufügenderMenüpunkt der Name eines neuen Menüpunkts ist, der vor Menüpunktname eingefügt werden soll. Menüpunkte kann man auch anfügen, indem man Menüpunktname weglässt (also wenn man zwei aufeinanderfolgende Kommas schreibt). Im Gegensatz zum Add-Unterbefehl erstellt der Insert-Unterbefehl immer einen neuen Menüpunkt, egal ob DavorEinzufügenderMenüpunkt bereits als Menüpunkt existiert.

Delete

Entfernt einen bestimmten Menüpunkt aus dem Menü.

Menu, Menüname, Delete , Menüpunktname

Menüpunktname ist der Name oder die Position eines Menüpunkts (siehe Menüpunktname, um mehr zu erfahren). Voreingestellte Menüpunkte wie "Exit" (siehe unten) können nicht einzeln gelöscht werden. Den Standard-Menüpunkt mit diesem Unterbefehl zu entfernen hat denselben Effekt wie, als hätte man den NoDefault-Unterbefehl verwendet. 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

Entfernt alle benutzerdefinierten Menüpunkte aus dem Menü.

Menu, Menüname, DeleteAll

Eventuell vorhandene voreingestellte Menüpunkte (siehe unten) bleiben unberührt. Im Gegensatz zu einem gelöschten Menü via Delete-Unterbefehl (siehe oben), bleibt ein leeres Menü weiterhin bestehen; andere Menüs, die dieses leere Menü als Untermenü verwenden, werden demzufolge solche Untermenüs beibehalten.

Rename

Benennt einen bestimmten Menüpunkt in NeuerName um.

Menu, Menüname, Rename, Menüpunktname , NeuerName

Wenn NeuerName leer ist, wird der angegebene Menüpunkt in eine Trennlinie umgewandelt. Menüpunktname ist der Name oder die Position eines Menüpunkts (siehe Menüpunktname, um mehr zu erfahren). 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-Unterbefehl verwendet, um dem Menüpunkt einen Label oder Untermenü zu geben.

Check

Setzt ein sichtbares Häkchen neben einem bestimmten Menüpunkt (wenn es noch nicht da ist).

Menu, Menüname, Check, Menüpunktname

Menüpunktname ist der Name oder die Position eines Menüpunkts (siehe Menüpunktname, um mehr zu erfahren).

Uncheck

Entfernt das Häkchen (sofern vorhanden) von einem bestimmten Menüpunkt.

Menu, Menüname, Uncheck, Menüpunktname

Menüpunktname ist der Name oder die Position eines Menüpunkts (siehe Menüpunktname, um mehr zu erfahren).

ToggleCheck

Setzt ein sichtbares Häkchen neben einem bestimmten Menüpunkt; wenn es schon gesetzt ist, wird es wieder entfernt.

Menu, Menüname, ToggleCheck, Menüpunktname

Menüpunktname ist der Name oder die Position eines Menüpunkts (siehe Menüpunktname, um mehr zu erfahren).

Enable

Erlaubt dem Benutzer, einen bestimmten Menüpunkt wieder anzuklicken, falls er zuvor deaktiviert (ergraut) war.

Menu, Menüname, Enable, Menüpunktname

Menüpunktname ist der Name oder die Position eines Menüpunkts (siehe Menüpunktname, um mehr zu erfahren).

Disable

Zeigt einen bestimmten Menüpunkt in einer grauen Farbe an, um kenntlich zu machen, dass der Benutzer ihn nicht anklicken kann.

Menu, Menüname, Disable, Menüpunktname

Menüpunktname ist der Name oder die Position eines Menüpunkts (siehe Menüpunktname, um mehr zu erfahren).

ToggleEnable

Deaktiviert die Interaktion mit einem bestimmten Menüpunkt; wenn sie bereits deaktiviert ist, wird sie wieder aktiviert.

Menu, Menüname, ToggleEnable, Menüpunktname

Menüpunktname ist der Name oder die Position eines Menüpunkts (siehe Menüpunktname, um mehr zu erfahren).

Default

Macht einen bestimmten Menüpunkt zum Standard-Menüpunkt und stellt ihn in fetter Schrift dar.

Menu, Menüname, Default , Menüpunktname

In einem Menü, das nicht TRAY ist, ist das Setzen des Standard-Menüpunkts rein kosmetischer Natur. Menüpunktname ist der Name oder die Position eines Menüpunkts (siehe Menüpunktname, um mehr zu erfahren). Wenn der Benutzer das Tray-Symbol doppelt anklickt, wird der Standard-Menüpunkt gestartet. Wenn es keinen Standard-Menüpunkt gibt, hat ein Doppelklick keine Wirkung. Menüpunktname wegzulassen hat denselben Effekt wie, als hätte man den NoDefault-Unterbefehl unten verwendet.

NoDefault

Macht das Setzen eines benutzerdefinierten Standard-Menüpunkts rückgängig.

Menu, Menüname, NoDefault

Beim Tray-Menü: Stellt den voreingestellten Standard-Menüpunkt wieder her - bei unkompilierten Skripten ist das OPEN und bei kompilierten Skripten nichts (außer wenn der MainWindow-Unterbefehl aktiv ist). Wenn der OPEN-Menüpunkt durch vorheriges Verwenden des NoStandard-Unterbefehls nicht vorhanden ist, wird es keinen Standard-Menüpunkt geben; ein Doppelklick auf das Tray-Symbol 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).

Menu, Menüname, Standard

Dieser Unterbefehl kann in Verbindung mit einem Tray-Menü oder jedem anderen Menü verwendet werden.

NoStandard

Entfernt alle voreingestellten (nicht benutzerdefinierten) Menüpunkte aus dem Tray-Menü (sofern sie vorhanden sind).

Menu, Menüname, NoStandard

Dieser Unterbefehl kann in Verbindung mit einem Tray-Menü oder jedem anderen Menü verwendet werden.

Icon

Beeinflusst je nach folgender Syntaxnutzung das Tray-Symbol oder [in AHK_L 17+] das Symbol des Menüpunkts.

Setzen des Tray-Symbols

Ersetzt das Tray-Symbol des Skripts mit eines der Symbole aus Dateiname.

Menu, Tray, Icon , Dateiname, Symbolnummer, 1

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, fügt man in Symbolnummer ihre Nummer ein (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 angesehen. Fügen Sie ein Sternchen (*) in Dateiname ein, um das Standardsymbol wiederherzustellen.

Der letzte Parameter: Geben Sie eine 1 im letzten Parameter an, um das Symbol einzufrieren, oder eine 0, um es wieder freizugeben (oder lassen Sie den Parameter leer, um den eingefrorenen/freigegebenen Zustand unverändert zu lassen). Wenn das Symbol eingefroren wurde, kann es nicht von Pause und Suspend geändert werden. Hinweis: Das folgende Beispiel zeigt, wie man mit einer 1 oder 0 das aktuelle Symbol einfrieren oder freigeben kann: Menu, Tray, Icon,,, 1.

Das Ändern des Tray-Symbols ä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 Tray-Symbol nicht sichtbar machen, wenn es zuvor mit Mitteln wie #NoTrayIcon versteckt wurde; um das zu tun, verwendet man Menu, Tray, Icon (ohne Parameter).

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

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 internen 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 Symbol-Handle anstelle eines Dateinamens verwenden. Zum Beispiel Menu Tray, Icon, HICON:*%Handle%. Das Sternchen ist erforderlich, da das Symbol zweimal "geladen" werden muss: einmal für das kleine Symbol und einmal für das große Symbol.

[v1.1.27+]: Nicht-symbolartige Bilddateien und Bitmap-Handles werden als Dateiname unterstützt. Zum Beispiel Menu Tray, Icon, HBITMAP:*%Handle%.

Setzt ein Symbol für einen bestimmten Menüpunkt.

Menu, Menüname, Icon, Menüpunktname, Dateiname , Symbolnummer, Symbolbreite

Menüpunktname ist der Name oder die Position eines Menüpunkts (siehe Menüpunktname, um mehr zu erfahren). 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, fügt man in Symbolnummer ihre Nummer ein (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. Fügen Sie die gewünschte Breite des Symbols in Symbolbreite ein. Wenn die angegebene Symbolgruppe in Symbolnummer mehrere Symbolgrößen enthält, wird das Symbol auf die naheliegendste Größe skaliert. In Beispiel #4 finden Sie 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

Beeinflusst je nach folgender Syntaxnutzung das Tray-Symbol oder [in AHK_L 17+] das Symbol des Menüpunkts.

Entfernen des Tray-Symbols

Entfernt das Tray-Symbol, sofern vorhanden.

Menu, Tray, NoIcon

Verwendet man diesen Unterbefehl ganz oben im Skript, könnte das Tray-Symbol beim Starten des Skripts kurz sichtbar sein. Um das zu verhindern, kann man stattdessen #NoTrayIcon nutzen. Die interne Variable A_IconHidden enthält eine 1, wenn das Tray-Symbol zurzeit versteckt ist, oder ansonsten eine 0.

Entfernen eines Menüpunktsymbols [AHK_L 17+]

Entfernt das Symbol von einem bestimmten Menüpunkt, falls vorhanden.

Menu, Menüname, NoIcon, Menüpunktname

Menüpunktname ist der Name oder die Position eines Menüpunkts (siehe Menüpunktname, um mehr zu erfahren).

Tip

Ändert das ToolTip des Tray-Symbols.

Menu, Tray, Tip , Text

Das ToolTip des Tray-Symbols wird angezeigt, wenn sich der Mauszeiger darüber befindet. Um einen Tooltip mehrzeilig zu machen, trennt man jede Zeile mit einem Zeilenumbruchszeichen (`n), 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 interne Variable A_IconTip enthält den aktuellen Text des ToolTips (sie ist leer, wenn der Standardtext verwendet wird).

Show

Zeigt Menüname an.

Menu, Menüname, Show , X, Y

Der Benutzer kann ein Menüpunkt mit Pfeiltasten, Tastenkürzel (unterstrichene Buchstaben) oder mit dem Mauszeiger auswählen. Mit Ausnahme der GUI-Menüleiste kann jedes Menü, einschließlich des Tray-Menü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. Verwenden Sie davor "CoordMode, Menu", um sie relativ zum ganzen Bildschirm zu machen.

Color

Setzt die Hintergrundfarbe des Menüs auf den angegebenen Farbwert.

Menu, Menüname, Color, Farbwert , Single

Farbwert ist entweder einer der 16 primären HTML-Farbnamen oder ein 6-stelliger RGB-Wert (siehe Farbtabelle). Lassen Sie den Farbwert-Parameter leer (oder verwenden Sie 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

Bestimmt die Anzahl der Klicks auf das Tray-Symbol, die zum Auslösen des Standard-Menüpunkts notwendig sind.

Menu, Tray, Click, Klickanzahl

Fügen Sie eine 1 in Klickanzahl ein, damit der Standard-Menüpunkt des Tray-Menüs mit einem einzigen Klick aktiviert werden kann. Fügen Sie eine 2 in Klickanzahl ein, um das Standardverhalten wiederherzustellen (Doppelklick). Zum Beispiel: Menu, Tray, Click, 1.

MainWindow

Aktiviert die Möglichkeit, das Hauptfenster eines kompilierten Skripts über das Tray-Symbol zu öffnen, was normalerweise nicht möglich wäre.

Menu, Tray, MainWindow

Dieser Unterbefehl 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.

NoMainWindow

Verhindert, dass das Hauptfenster eines kompilierten Skripts über das Tray-Symbol geöffnet werden kann.

Menu, Tray, NoMainWindow

Das heißt, dass dieser Unterbefehl im Endeffekt das Standardverhalten des Skripts wiederherstellt. 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.

UseErrorLevel

Überspringt jegliche Warnungsmeldungen und Thread-Beendigungen, wann immer der Menu-Befehl einen Fehler erzeugt.

Menu, Menüname, 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. Geben Sie Menu, Tray, UseErrorLevel an, um das Dialogfenster und die Terminierung des Threads zu verhindern; stattdessen wird ErrorLevel bei Misserfolg auf 1 und bei Erfolg auf 0 gesetzt. Um diese Option wieder auszuschalten, gibt man OFF (oder 0 in [v1.1.30+]) im nächsten Parameter an. Diese Einstellung ist global - das heißt, dass sie alle Menüs beeinflusst, nicht nur Menüname.

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

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 zugewiesen, wenn er das erste Mal zum Menü hinzugefügt wird. Skripte können sich nicht auf einen 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

Ein typisches Menü sieht wie folgt aus:

Menu

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

Mit Menu, Menüname, Add (ohne die restlichen Parameter) können Trennlinien in das Menü eingefügt werden. [v1.1.23+]: Um einzelne Trennlinien gezielt zu löschen, identifiziert man sie anhand ihrer Position im Menü. Zum Beispiel Menu, Menüname, Delete, 3&, wenn zwei Menüpunkte vor der Trennlinie sind. Alternativ können Sie Menu, Menüname, DeleteAll verwenden und dann Ihre benutzerdefinierten Menüpunkte neu einfügen.

Neue Menüpunkte werden immer am unteren Ende des Menüs eingefügt. Beim Tray-Menü: Um die eigenen Menüpunkte vor den voreingestellten Menüpunkten zu setzen (nachdem eigene Menüpunkte bereits eingefügt wurden), ist es erforderlich, Menu, Tray, NoStandard und anschließend Menu, Tray, Standard auszuführen.

Kein einziger Menu-Unterbefehl kann mit voreingestellten Menüpunkten wie "Pause Script" und "Suspend Hotkeys" agieren.

Ein Menü, das komplett leer ist - z. B. via Menu, MeinMenü, DeleteAll - kann nicht angezeigt werden. Wenn das Tray-Menü leer ist, wird das Anklicken des Tray-Symbols 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 hinauszuzögern, fügt man Critical in die erste Zeile der Subroutine ein (allerdings wird das auch andere Threads, wie z. B. das Drücken eines Hotkeys, hinauszuzögern).

Jedes Mal, wenn eine Subroutine über einen Menüpunkt gestartet wird, starten Einstellungen wie SendMode mit ihren Standardwerten. Diese Standardwerte können im automatischen Ausführungsbereich geändert werden.

Die internen 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.

Um ein Skript ohne Hotkey und GUI dauerhaft laufen zu lassen -- z. B. ein Skript, das ausschließlich benutzerdefinierte Menüs oder Menüpunkte enthält -- ist es erforderlich, #Persistent zu verwenden.

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

Beispiele

Beispiel #1

Dieses Skript zeigt, wie ein neuer Menüpunkt an das Ende des Tray-Menü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ücken Sie WIN+Z, um das Menü anzuzeigen.

Beispiel #3

Dieses Skript zeigt einige der verschiedenen Menu-Unterbefehle:

#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 <> false)
{
    Menu, Tray, NoStandard
    Standard := false
}
else
{
    Menu, Tray, Standard
    Standard := true
}
return

TestDelete:
Menu, Tray, Delete, TestDelete
return

TestDeleteAll:
Menu, Tray, DeleteAll
return

TestRename:
if (NeuerName <> "unbenannt")
{
    AlterName := "TestRename"
    NeuerName := "unbenannt"
}
else
{
    AlterName := "unbenannt"
    NeuerName := "TestRename"
}
Menu, Tray, Rename, %AlterName%, %NeuerName%
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 ; Symbol mit dem Ressourcenidentifikator 206
Menu, Dateimenü, Icon, Pause-Symbol, %A_AhkPath%, -207 ; Symbol mit dem Ressourcenidentifikator 207
Menu, MeineMenüleiste, Add, &Datei, :Dateimenü
Gui, Menu, MeineMenüleiste
Gui, Add, Button, gExit, Beendet dieses Beispiel
Gui, Show
return

MenuHandler:
return

Exit:
ExitApp