用API可以实现菜单的单击,如:
SendMessage(WM_COMMAND,ID_FILE_OPEN)但在VB中如何实现? 比如mnuFileOpen(打开...)的单击。
因为mnuFileOpen只是VB的名称,并不是一个菜单句柄。??
SendMessage(WM_COMMAND,ID_FILE_OPEN)但在VB中如何实现? 比如mnuFileOpen(打开...)的单击。
因为mnuFileOpen只是VB的名称,并不是一个菜单句柄。??
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetMenuItemID Lib "user32.dll" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetSubMenu Lib "user32.dll" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Const WM_COMMAND As Long = &H111
Private Sub Command1_Click()
Dim h1 As Long, h2 As Long, id As Long
h1 = FindWindow(vbNullString, "Form1")
Debug.Print h1
h2 = GetMenu(h1)
h2 = GetSubMenu(h2, 0)
id = GetMenuItemID(h2, 0)
SendMessage h1, WM_COMMAND, id, ByVal 0&
End Sub
Private Sub menu222_Click()
MsgBox "222"
End Sub你要这样的效果?
我现在的问题是如何取得如上的menu222这个菜单的位置,我菜单的位置不一定就是0啊。
你遍历所有菜单,找到你要点击的菜单位置不就行了