问大家一个问题,当我得到一个菜单的句柄后,向它发什么消息可以实现用鼠标单击它的效果?
解决方案 »
- 怎么让VB做的EXE来读取EXCEL里的数据?
- 调用API涵数的问题
- Adodc控件,用Microsoft.Jet.OLEDB.4.0连接ACCESS数据库,ACCESS数据库不能有密码?Adodc的BUG?
- 我如何用自定义类型的变量做参数,定义一个public的函数作为该类的一个方法?
- 如何使数码相机拍摄到照片传到数据库
- 60分请教一个很菜的问题,感谢!!!在线等!!!
- vb+excel问题
- 我写了一个我觉得很好的组件,图片处理组件,在中国还是个空白,但我不知道怎么发布?谁帮我 ??
- 98窗体透明
- 请问有没有一个控制锁定系统的函数
- 关于sql语句的问题,在线等!
- 用按钮关闭本窗口,不用end,怎么办?
API viewer里没有这个常量的值啊?您试了吗?有没有代码?
WM_LBUTTONDOWN 我试了,不行啊!!!大家还有没有别的办法,帮帮我吧,很急的!!!!!!!!!!!
大家如果有时间最后能帮着调试一下,如果成功就把代码贴上来,谢谢!!!!!!
补充一下,我得到的菜单句柄是另外一个程序的菜单!
大家有没有源码贴一下啊??
Wndproc proc hWnd:dword,uMsg:dword,wParam:dword,lParam:dword
.if uMsg==WM_COMMAND
.if wParam==1 ;这是按键的ID
....
.endif
.endif
Wndproc endp
我要实现的是通过我的VB程序单击另外一个程序中的菜单!!!
现在我已经知道了那个菜单的句柄,用SendMessage怎么向这个句柄发消息才能实现用鼠标单击这个菜单的效果??????????比如我通过VB先启动了超级解霸,然后又获得了“文件”菜单下的“打开单个文件”菜单的句柄,现在我想通过SendMessage向它发个类似[单击]的消息实现和用鼠标单击该菜单一样的效果。不知道说清楚没有。
应该用 SendMessage 发消息,但我不知道后面具体的参数怎么写?大家帮帮忙!!!!!
如果你知道含有那个菜单的窗口的话,可以用 WM_COMMAND :
SendMessage( 窗口句柄, WM_COMMAND, 菜单句柄, ByVal 0& )
帮我看看我的做法有问题吗?我试了不行啊,handle 就是那个窗口的句柄。SendMessage Handle, WM_COMMAND, GetSubMenu(GetSubMenu(GetMenu(Handle), 0), 1), ByVal 0&
试试这个:
SendMessage Handle, WM_COMMAND, GetMenuItemID(GetSubMenu(GetMenu(Handle), 0), 1), ByVal 0&
或这个:
SendMessage Handle, WM_COMMAND, GetMenuItemID(GetSubMenu(GetSubMenu(GetMenu(Handle), 0), 1), 0), ByVal 0&
===============================================================================
Option Explicit
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Private Declare Function GetMenuItemID Lib "user32.dll" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetSystemMenu Lib "user32.dll" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Const WM_SYSCOMMAND As Long = &H112Private Sub Command1_Click()
Dim hMenu As Long, Rc As Long
Dim SubMenuID As Long
hMenu = GetSystemMenu(Me.hwnd, 0&)
SubMenuID = GetMenuItemID(hMenu, 4&)
Debug.Print "SubMenuID"; SubMenuID
Rc = SendMessage(Me.hwnd, WM_SYSCOMMAND, SubMenuID, ByVal 0&)
Debug.Print "Rc"; Rc '注意返回0(有点怪)
End Sub
==================================================================================希望对你有帮助!!!!
原来第三个参数应该是菜单的ID而不是菜单的句柄。
现在终于明白了!!! 再次谢谢大家!!! :)
结贴,放分。