GetMenuItemCount

機能
メニューの項目数を取得
Declare Function GetMenuItemCount Lib "user32.dll" _
(ByVal hMenu As Long) As Long
Declare Function GetMenuItemCount Lib "user32.dll" _
(ByVal hMenu As Integer) As Integer

int GetMenuItemCount(
HMENU hMenu
);
引数
hMenu

メニューのハンドル
戻り値
正常終了のとき  メニューの項目数
エラーのとき  -1
サンプル
ダウンロード(GetMenuItemCount.lzh 2.24KB)

Private Sub Command1_Click()
Me.List1.Clear
With Me
    Dim hMenu As Long, hSubMenu As Long
    Dim SubMenuCnt As Long, nPos As Long
    Dim MenuID As Long, Temp As String
    
    'トップメニューのハンドル取得
    hMenu = GetMenu(.hWnd)
    
    'サブメニューのハンドル取得
    hSubMenu = GetSubMenu(hMenu, 0)


'サブメニューの項目数を知る SubMenuCnt = GetMenuItemCount(hSubMenu) .List1.AddItem "項目数:" + Str(SubMenuCnt) 'メニュー項目のID・文字列取得 For nPos = 0 To SubMenuCnt - 1 MenuID = GetMenuItemID(hSubMenu, nPos) '文字列取得用のバッファを確保 Temp = String(256, Chr(0)) Call GetMenuString(hSubMenu, nPos, Temp, Len(Temp), MF_BYPOSITION) '文字列を抜き出す a = InStr(Temp, Chr(0)) If a - 1 > 0 Then Temp = Mid(Temp, 1, a - 1) Else Temp = "" End If '表示 .List1.AddItem Temp + Chr(9) + Str(MenuID) Next End With End Sub