WM_LBUTTONUP来实现,但当打开第一层菜单后,想执行弹出的菜单项,再用这个消息就
不起作用了。
首先第三方程序的菜单不是标准的菜单,无法用GetMenu获取到主菜单项,再用
GetSubMenu获取子菜单。
第二,我可以获取到第三方程序的菜单所在的Bar的Handle(用spy++能看到,因此也可
以用FindWindowEx获取到),但仅能获取到这层,其中的菜单项无法获取到。
第三,网上都到可以不一层层打开,用WM_COMMAND消息,可是关于wParam参数的获取很
迷惑,不知道怎么得到。网上大部分都提到在资源中可以查到菜单的ID,比如用
eXescpoe软件查看。但是我的第三方程序用这个软件查看,在资源中无菜单项,还是得
不到菜单ID。另外我发现delphi生成的exe,使用的TMainMenu再资源中也没有菜单项。
烦请各路大虾给予指导,再次先说声感谢!
7 个解决方案
#1
能否 用鼠标模拟点击呢?
#2
这......Ls的方法也是没有办法的办法了,首先把目标窗体最大化,可以用消息实现,然后设定鼠标位置再模拟点击
另外模拟键盘也是可以的,用键盘tab切换再加热键也是可以实现点击菜单项的
另外有个叫UISpy.exe的东西,Lz可以看一下,能不能取到菜单的id
另外模拟键盘也是可以的,用键盘tab切换再加热键也是可以实现点击菜单项的
另外有个叫UISpy.exe的东西,Lz可以看一下,能不能取到菜单的id
#3
Lz下个UISpy试试呢
#4
不能模拟鼠标点击,因为我是隐藏控制,即第三方程序在虚拟界面里
#5
利用发送键盘消息,解决了这个问题。
#6
楼主是怎么解决的?,应该把代码发出来共享一下
#7
参见http://bbs.csdn.net/topics/300238697
::SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(XXXX,BN_CLICKED),NULL);
hwnd是菜单所在窗体的hwnd
XXXX可以是菜单标识如数字123,也可以是菜单的ID_XXXX这样的形式
如果是ID_XXX的形式需要详细的进行预定义
::SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(XXXX,BN_CLICKED),NULL);
hwnd是菜单所在窗体的hwnd
XXXX可以是菜单标识如数字123,也可以是菜单的ID_XXXX这样的形式
如果是ID_XXX的形式需要详细的进行预定义
#1
能否 用鼠标模拟点击呢?
#2
这......Ls的方法也是没有办法的办法了,首先把目标窗体最大化,可以用消息实现,然后设定鼠标位置再模拟点击
另外模拟键盘也是可以的,用键盘tab切换再加热键也是可以实现点击菜单项的
另外有个叫UISpy.exe的东西,Lz可以看一下,能不能取到菜单的id
另外模拟键盘也是可以的,用键盘tab切换再加热键也是可以实现点击菜单项的
另外有个叫UISpy.exe的东西,Lz可以看一下,能不能取到菜单的id
#3
Lz下个UISpy试试呢
#4
不能模拟鼠标点击,因为我是隐藏控制,即第三方程序在虚拟界面里
#5
利用发送键盘消息,解决了这个问题。
#6
楼主是怎么解决的?,应该把代码发出来共享一下
#7
参见http://bbs.csdn.net/topics/300238697
::SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(XXXX,BN_CLICKED),NULL);
hwnd是菜单所在窗体的hwnd
XXXX可以是菜单标识如数字123,也可以是菜单的ID_XXXX这样的形式
如果是ID_XXX的形式需要详细的进行预定义
::SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(XXXX,BN_CLICKED),NULL);
hwnd是菜单所在窗体的hwnd
XXXX可以是菜单标识如数字123,也可以是菜单的ID_XXXX这样的形式
如果是ID_XXX的形式需要详细的进行预定义