GetSubMenu

構文(VBA)
Declare Function GetSubMenu Lib "user32" Alias "GetSubMenu" (ByVal hMenu As Long, ByVal nPos As Long) As Long
構文(UWSC)
DEF_DLL GetSubMenu(HWND, int): HWND: user32.dll
引数
hMenu
親メニューのハンドル
nPos
ドロップダウンメニューまたはサブメニューの項目の位置を0からの値で指定
戻り値

プログラム実行例

メモ帳の指定したメニュー項目を無効化する

[ファイル]の「メモ帳の終了」をグレー表示でクリックできないようにする。

DEF_DLL GetSubMenu(HWND, int): HWND: user32.dll
DEF_DLL EnableMenuItem(HWND, UINT, UINT): DWORD: user32.dll

CONST MF_BYPOSITION = $400
CONST MF_GRAYED = $1

DIM ID = EXEC("notepad")
DIM hwnd = GetSubMenu(GETCTLHND(ID, GET_MENU_HND), 0)

PRINT EnableMenuItem(hwnd, 9, MF_BYPOSITION + MF_GRAYED)

他の項目は以下の表を参照。

値は、(GetSubMenu第ニ引数)と(EnableMenuItem第二引数)を表しています。

例えば「フォント」の場合、2-1なので以下のように指定します。

GetSubMenu(GETCTLHND(ID, GET_MENU_HND), 2)
EnableMenuItem(hwnd, 1, MF_BYPOSITION + MF_GRAYED)
項目
0-0 新規
0-1 新しいウィンドウ
0-2 開く
0-3 上書き保存
0-4 名前を付けて保存
0-6 ページ設定
0-7 印刷
0-9 メモ帳の終了
項目
1-11 置換
1-14 すべて選択
1-15 日付と時刻
項目
2-0 右端で折り返す
2-1 フォント
項目
3-0 ズーム
3-1 ステータスバー
項目
4-0 ヘルプの表示
4-1 フィードバックの送信
4-3 バージョン情報
  1. user32.GetSubMenu
  2. user32.EnableMenuItem
  3. EXEC
  4. GETCTLHND