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を「*」にすると、スクリプトのデフォルトアイコンになる。
ここでの設定は、InputBoxやProgressでのアイコンにも反映される。
A_IconNumberやA_IconFileとして現在の設定を取得できる。(デフォルトのときは空になる)
Freezeに1を指定すると、トレイアイコンを固定し、PauseコマンドやSuspendコマンドでアイコンが変化しないようにすることができる。Freezeを0にするとトレイアイコンの固定を解除できる。
- Icon,,,1
- PauseやSuspendコマンドを実行したときにトレイアイコンが変わらないようにする
- 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
- メニューからスクリプトのメインウィンドウを表示することを禁止する。
ListLines、ListVars、ListHotkeys、KeyHistoryコマンドが実行された場合は、ここでの設定にかかわらず表示される。
- 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