' make sure to import "Imports System.Runtime.InteropServices"
Public Structure MENUITEMINFO
Public cbSize As Integer
Public fMask As Integer
Public fType As Integer
Public fState As Integer
Public wID As Integer
Public hSubMenu As Integer
Public hbmpChecked As Integer
Public hbmpUnchecked As Integer
Public dwItemData As Integer
Public dwTypeData As String
Public cch As Integer
End Structure
Public Const MFS_ENABLED = &H0
Public Const MFS_GRAYED = &H3
Public Const MIIM_STATE = &H1
Public Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Integer, ByVal un As Integer, ByVal b As Boolean, ByRef lpMenuItemInfo As MENUITEMINFO) As Integer
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Public Declare Function GetMenu Lib "user32" Alias "GetMenu" (ByVal hwnd As Integer) As Integer
Public Declare Function GetSubMenu Lib "user32" Alias "GetSubMenu" (ByVal hMenu As Integer, ByVal nPos As Integer) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim hWnd As Integer = FindWindow(Nothing, "Form1")
Dim hMenu As Integer = GetMenu(hWnd)
Dim menuItem As MENUITEMINFO
menuItem.cbSize = Marshal.SizeOf(menuItem)
menuItem.fMask = MIIM_STATE
Dim ret As Integer
ret = GetMenuItemInfo(hMenu, 0, True, menuItem)
If ret <> 0 Then 'if ret is non-zero, then function succeeded
If menuItem.fState = MFS_GRAYED Then
MsgBox("Menu item is disabled")
ElseIf menuItem.fState = MFS_ENABLED Then
MsgBox("Menu item is enabled")
End If
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim hWnd As Integer = FindWindow(Nothing, "Form1")
Dim hMenu As Integer = GetMenu(hWnd)
Dim hSubMenu As Integer = GetSubMenu(hMenu, 0)
Dim menuItem As MENUITEMINFO
menuItem.cbSize = Marshal.SizeOf(menuItem)
menuItem.fMask = MIIM_STATE
Dim ret As Integer
ret = GetMenuItemInfo(hSubMenu, 0, True, menuItem)
If ret <> 0 Then 'if ret is non-zero, then function succeeded
If menuItem.fState = MFS_GRAYED Then
MsgBox("Menu item is disabled")
ElseIf menuItem.fState = MFS_ENABLED Then
MsgBox("Menu item is enabled")
End If
End If
End Sub