Menu

ポップアップメニューを作成したり表示したりする。タスクトレイアイコンやツールチップの設定も行える。

Menu, MenuName, Cmd [, P3, P4, FutureUse]

Parameters

引数名説明
MenuName 「TRAY」とすると、タスクトレイの右クリックメニューを設定できる。
それ以外は、カスタムメニュー名となる。
カスタムメニューは、Addコマンドで項目を登録したときに新規作成される。
Cmd, P3, P4 下記参照
FutureUse 将来の拡張のために確保されている。今のところこの引数は無視される。

メニュー項目操作

Add , MenuItemName
「MenuItemName」で指定した表示名でメニュー項目を追加し、「MenuItemName」で指定した名前のラベルを割り当てる。
Add , MenuItemName, Label
「MenuItemName」で指定した表示名でメニュー項目を追加し、「Label」で指定した名前のラベルを割り当てる。
Add , MenuItemName, :Submenu
「MenuItemName」で指定した表示名でメニュー項目が追加され、選択すると「Submenu」で指定した名前のメニューが展開されるようになる。
「Submenu」のメニューはあらかじめ作成しておく。
サブメニュー名の前に「:」をつける必要がある。
Add , MenuItemName,[ Label],Pn
Pnのnでメニューを選択したときに実行されるスレッドの割り込み優先度を設定できる。(例:「P10」)
Add
メニューに区切り線を追加する。 現在のところ、区切り線単体を削除することは出来ないので、DeleteAllで全削除してから追加しなおすしかない。
Delete [, MenuItemName]
MenuItemNameで指定した項目を削除する。
MenuItemNameが省略された場合、MenuNameのメニュー自体が削除される。他のメニューにサブメニュー項目として登録されていた場合、その項目も削除される。
DeleteAll
メニュー内の項目を全て削除する。
メニュー自体は削除されない。
Rename, MenuItemName [, NewName]
MenuItemNameの項目名をNewNameに変更する。
NewNameが省略された場合、項目は区切り線に変わる。
他の項目名と同じ名前にすることはできない。
Check, MenuItemName
MenuItemNameの項目をチェックが付いた状態にする。
Uncheck, MenuItemName
MenuItemNameの項目をチェックの付いていない状態にする。
ToggleCheck, MenuItemName
MenuItemNameの項目のチェックの有無を切り替える。
Enable, MenuItemName
MenuItemNameの項目を有効化する。
Disable, MenuItemName
MenuItemNameの項目を無効化(選択不能状態)する。
ToggleEnable, MenuItemName
MenuItemNameの項目の有効・無効を切り替える。
Default [, MenuItemName]
メニューのデフォルト項目をMenuItemNameの項目に設定する。
デフォルト項目は太字で表示される。
タスクトレイメニューの場合、タスクトレイアイコンをダブルクリックしたときにデフォルト項目が実行される。
MenuItemNameが省略されたときは、NoDefaultと同じになる。
NoDefault
デフォルト項目の設定を解除し、デフォルト項目が無い状態にする。
Standard
タスクトレイメニューにあるような標準メニュー項目を追加する
NoStandard
標準メニュー項目を削除する

タスクトレイ関係

MenuNameは「TRAY」とすること

Icon, FileName [, IconNumber, Freeze]
タスクトレイアイコンを変更する。
FileNameにはアイコンを含むファイル(.ico,.dll,.exeなど)を指定する。
IconNumberにはアイコン番号を指定。省略時は「1」になる。
FileNameを「*」にすると、スクリプトのデフォルトアイコンになる。
ここでの設定は、InputBoxProgressでのアイコンにも反映される。
A_IconNumberやA_IconFileとして現在の設定を取得できる。(デフォルトのときは空になる)
Freezeに1を指定すると、トレイアイコンを固定し、PauseコマンドやSuspendコマンドでアイコンが変化しないようにすることができる。Freezeを0にするとトレイアイコンの固定を解除できる。
Icon,,,1
PauseSuspendコマンドを実行したときにトレイアイコンが変わらないようにする
Icon,,0
Icon,,1の設定を解除
Icon
#NoTrayIcon指令でアイコンが非表示になっているとき、デフォルトのアイコンを表示する。
NoIcon
トレイアイコンを非表示にする。
スクリプト起動時にアイコンを非表示にしたい場合、#NoTrayIcon指令を使ったほうがよい。
アイコンが非表示かどうかはA_IconHidden変数で参照できる。(0なら表示、1なら非表示)
Tip [, Text]
トレイアイコンにマウスを乗せたときに表示されるツールチップを変更する。 Textが省略された場合、スクリプトのデフォルトテキストになる。
A_IconTip変数で設定した内容を参照できる。(デフォルトのときは空)

Show [,X ,Y]
MenuNameのメニューを表示する。
GUIウィンドウのメニューバーに関連付けられているメニューは表示できない。
X,Yに表示する座標を指定する。省略時はマウスカーソル位置。
座標の指定方法は、「CoordMode, Menu」でアクティブウィンドウからの相対座標か、スクリーン全体での絶対座標かを設定できる。
Color, ColorValue[, Single]
メニューの背景色を変更する。
ColorValueにはRRGGBB形式のカラーコード(例:FF9900)や色名(例:Red)を指定できる。
ColorValueを省略するか「Default」を指定すると、システムで設定されたメニュー背景色に戻る。
通常は、サブメニューの背景色も変更されるが、第3引数に「Single」を指定するとサブメニューは変更されない。
このサブコマンドはWindows95/NTでは効果がない。
Click, ClickCount
トレイアイコンからメインウィンドウを表示するための操作を設定する。
ClickCountに「1」を指定すると、シングルクリックで表示される。
「2」を指定すると、ダブルクリックで表示される。
デフォルトは「2」。
MainWindow
メニューからスクリプトのメインウィンドウを表示することを許す。
MenuNameはTRAYとする。
EXE化されたスクリプトでのみ有効。
NoMainWindow
メニューからスクリプトのメインウィンドウを表示することを禁止する。
ListLinesListVarsListHotkeysKeyHistoryコマンドが実行された場合は、ここでの設定にかかわらず表示される。
UseErrorLevel [, off]
通常、Menuコマンド実行時に何らかのエラーがあったら、エラーダイアログが表示され、現在のスレッドは終了する。
UseErrorLevelを行うと、エラーダイアログを表示せず、ErrorLevel変数を「1」にする。
引数にOFFをつけると、この設定をOFFにできる。
この設定は、全てのメニューに影響する。

Remarks

メニューアイテム名に「&a」のように「&」に続いて英数字をつけたものがあると、その部分が下線付きの英数字として表示され、対応するキーを押すことでそのメニューアイテムを選択できるようになる。

メニューやメニュー項目名は最大260文字まで。
メニュー項目名は大文字小文字を無視してマッチする。

メニューアイテムは常に一番下に追加される。
トレイメニューの上に項目を追加したい場合、NoStandardでいったん標準項目を削除して、Standardで追加しなおす。

空のメニューは表示できない。

メニューアイテムはスレッドとして実行される。
メニューアイテムのスレッド実行中に別のスレッドが割り込むこともある。
優先度を設定し、低い優先度のスレッドの割り込みを禁止することもできる。

A_ThisMenuItem」変数で一番最近実行された実行されたメニュー項目名を、「A_ThisMenu」でメニュー名を参照できる。

ホットキーを使わず、メニューアイテムなどからのみアクションを実行するスクリプトの場合、#Persistent指令を記述して明示的に常駐状態にしなければならない。

Related

Threads, Gosub, Return, SetTimer, #Persistent

Example(s)

Menu, tray, add, Item1, MenuHandler
return
MenuHandler:
MsgBox You selected %A_ThisMenuItem% from menu %A_ThisMenu%
return

; This test script demonstrates some of the various menu commands.
#Persistent
#SingleInstance
menu, tray, add ; separator
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 ; Also enables the next test since it can't undo the disabling of itself.
menu, tray, add, TestDelete ; Similar to above.
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 NewName <> renamed
{
	OldName = TestRename
	NewName = renamed
}
else
{
	OldName = renamed
	NewName = TestRename
}
menu, tray, rename, %OldName%, %NewName%
return

Test:
MsgBox, You selected "%A_ThisMenuItem%" in menu "%A_ThisMenu%".
return