MenuSelect

指定されたウィンドウのメニューバーからメニュー項目を呼び出します。

MenuSelect WinTitle, WinText, Menu , SubMenu1, SubMenu2, SubMenu3, SubMenu4, SubMenu5, SubMenu6, ExcludeTitle, ExcludeText

パラメータ

WinTitle、WinText、ExcludeTitle、ExcludeText

型:文字列整数またはオブジェクト

もしこれらの項目が未設定または省略されたときは、最後に見つかったウィンドウが使用されます。そうでないときは、WinTitleウィンドウタイトルまたはターゲットウィンドウを識別するための他の基準、および/またはWinTextにターゲットウィンドウの単一のテキスト要素からの部分文字列(付属のWindow Spyユーティリティを使えばわかります)を指定します。

ExcludeTitleExcludeTextはウィンドウのタイトルまたはテキストで除外するために使用します。指定の仕方はWinTitleWinTextに似ていますが、ExcludeTitleはウィンドウのタイトル以外の基準(ウィンドウクラスやHWNDなど)を認識しません。

ウィンドウのタイトルとテキストは大文字と小文字を区別します。DetectHiddenWindows関数 と DetectHiddenText関数で変更しない限り、初期設定では非表示ウィンドウは検出されず、非表示テキストは検出されます。SetTitleMatchMode関数で変更しない限り、初期設定ではウィンドウのタイトルはその中のどこかにWinTitleまたはExcludeTitleを含んでいれば一致します。

Menu

型:文字列

The name (or a prefix of the name) of the top-level menu item, e.g. "File", "Edit", "View". It can also be the position of the desired menu item by using "1&" to represent the first menu, "2&" the second, and so on.

検索は、現在のユーザーのロケールの規則に従って大文字と小文字を区別せず、最初に一致した項目で停止します。The use of ampersand (&) to indicate the underlined letter in a menu item is usually not necessary (i.e. "&File" is the same as "File").

既知の制限事項:パラメータにアンパサンドが含まれる場合、リテラル以外のアンパサンド(非表示または下線表示)も含めて、アイテム名と正確に一致する必要があります。パラメータにアンパサンドが含まれていない場合、リテラルも含めてすべてのアンパサンドが無視されます。For example, an item displayed as "a & b" may match a parameter value of a && b or a b.

Specify "0&" to use the window's system menu.

SubMenu1

型:文字列

The name of the menu item to select or its position. 最上位のアイテムにメニューがない場合(稀)には省略可能です。

SubMenu2, SubMenu3, SubMenu4, SubMenu5, SubMenu6

型:文字列

If the previous submenu itself contains a menu, this is the name of the menu item inside, or its position.

エラー処理

ウィンドウやコントロールが見つからなかったり、Win32標準のメニューがない場合は、TargetErrorがスローされます。

メニュー、サブメニュー、メニューアイテムが見つからない場合、または最後のメニューパラメータがサブメニューを開くメニューアイテムに対応する場合、ValueErrorがスローされます。

備考

この機能を使用するためには、ターゲットウィンドウがアクティブである必要はありません。ただし、一部のウィンドウは最小化しない状態が必要な場合があります。

この機能は、標準以外のメニューバーを使用するアプリケーションでは動作しません。例えば、Microsoft OutlookやOutlook Expressは、メニューバーに偽装されたツールバーを使用しています。このような場合は、ControlSendPostMessageを使用することを検討してみてください。

メニュー名のパラメーターは、位置を指定することも可能です。この方法は、テキストを含まないメニューをサポートするために存在します(おそらく、実際のテキストではなく、テキストの画像を含むため)。ポジション1&は1番目のメニュー項目(例:ファイルメニュー)、ポジション2&は2番目のメニュー項目(例:編集メニュー)、といった具合に。メニューの区切り線は、メニューの位置を決定するためのメニュー項目としてカウントされます。

System Menu

Menu can be "0&" to select an item within the window's system menu, which typically appears when the user presses Alt+Space or clicks on the icon in the window's title bar. 事例:

ウィンドウをアクティブにせずに、cmd.exeにコマンドを貼り付ける。
A_Clipboard := "echo Hello, world!`r"
MenuSelect "ahk_exe cmd.exe",, "0&", "Edit", "Paste"

注意:システムメニューにカスタム項目があるウィンドウズでのみ使用します。

ウィンドウにカスタムシステムメニューがまだない場合、標準システムメニューのコピーが作成され、副作用としてターゲットウィンドウに割り当てられます。このコピーは、スクリプトが終了するときにシステムによって破棄され、他のスクリプトはアクセスできない状態になります。したがって、すべてのウィンドウに表示される標準的な項目には、0&を使用しないようにしてください。代わりに、WM_SYSCOMMANDメッセージを直接投稿してください。事例:

; [WinMinimize"A"]のように、最小化のためのシステム音も再生します。
WM_SYSCOMMAND := 0x0112
SC_MINIMIZE := 0xF020
PostMessage WM_SYSCOMMAND, SC_MINIMIZE, 0,, "A"

ControlSend, PostMessage

Selects File -> Open in Notepad. この例は、Windows 11以降では、クラシック版のメモ帳を必要とするため、失敗する可能性があります。

MenuSelect "Untitled - Notepad",, "File", "Open"

名前ではなく役職で行う以外は上記と同じです。Windows 10では、「新しいウィンドウ」メニューが新設されたため、2&を3&に置き換えてください。この例は、Windows 11以降では、クラシック版のメモ帳を必要とするため、失敗する可能性があります。

MenuSelect "Untitled - Notepad",, "1&", "2&"

メインウィンドウView -> Lines most recently executeを選択します。

WinShow "ahk_class AutoHotkey"
MenuSelect "ahk_class AutoHotkey",, "View", "Lines most recently executed"