GetMenuItemInfo

機能
メニューに関する情報取得
Declare Function GetMenuItemInfo Lib "user32.dll" _
Alias "GetMenuItemInfoA" _
(ByVal hMenu As Long, ByVal uItem As Long, _
ByVal fByPosition As Long, lpmii As MENUITEMINFO) As Long
Declare Function GetMenuItemInfo Lib "user32.dll" _
Alias "GetMenuItemInfoA" _
(ByVal hMenu As Integer, ByVal uItem As Integer, _
ByVal fByPosition As Integer, lpmii As MENUITEMINFO) As Integer

BOOL GetMenuItemInfo(
HMENU hMenu,
UINT uItem,
BOOL fByPosition,
LPMENUITEMINFO lpmii
);
引数
hMenu

メニューハンドル
uItem
メニュー項目のID or インデックス
fByPosition
uItemの意味を示す定数
lpmii
(戻り値)メニューの情報を取得するMENUITEMINFO構造体
戻り値
正常終了のとき  0以外
エラーのとき  0
fByPosの定数

MF_BYCOMMAND = &H0               uItemはメニュー項目のID
MF_BYPOSITION = &H400            uItemはメニュー項目のインデックス
サンプル
ダウンロード(GetMenuItemInfo.lzh 3.16KB)

Private Sub Command1_Click()
Dim lpmii As MENUITEMINFO, rc As Long
With Me.List1
    'リストボックスのクリア
    .Clear
    
    lpmii.cbSize = Len(lpmii)
    lpmii.fMask = MIIM_CHECKMARKS Or MIIM_DATA Or MIIM_ID _
                Or MIIM_STATE Or MIIM_SUBMENU Or MIIM_TYPE
    
    '関数の実行
    rc = GetMenuItemInfo(GetMenu(Me.hWnd), 0, MF_BYPOSITION, lpmii)
    If rc = 0 Then
        .AddItem "失敗!"
    Else
        .AddItem "fMask &H" + Hex(lpmii.fMask)
        .AddItem "fType &H" + Hex(lpmii.fType)
        .AddItem "fState &H" + Hex(lpmii.fState)
        .AddItem "wID &H" + Hex(lpmii.wID)
        .AddItem "hSubMenu &H" + Hex(lpmii.hSubMenu)
        .AddItem "hbmpChecked &H" + Hex(lpmii.hbmpChecked)
        .AddItem "hbmpUnChecked &H" + Hex(lpmii.hbmpUnChecked)
        .AddItem "dwItemData &H" + Hex(lpmii.dwItemData)
        .AddItem "dwTypeData &H" + Hex(lpmii.dwTypeData)
    End If
End With
End Sub