网上找了很多资源,自己也试了多种方法,都行不通!
我要解决的问题是,要获取一个外部程序的控件,并模拟单击该控件,之后弹出一个PopupMenu,然后模拟单击该弹出菜单中的一项.我现在通过FindWindow和SendMessage实现了寻找控件和单击控件的功能,现在需要获取PopupMenu句柄及其其菜单中的各项目的句柄并实现点击的功能,用GetMenu可以获取到一个有效的句柄,但接着用GetSubMenu和 GetMenuItemID等API都起步到作用.网上搜了一下 ,利用获取截取消息的方法也行不通!还望高手指教!
万分感谢!
我要解决的问题是,要获取一个外部程序的控件,并模拟单击该控件,之后弹出一个PopupMenu,然后模拟单击该弹出菜单中的一项.我现在通过FindWindow和SendMessage实现了寻找控件和单击控件的功能,现在需要获取PopupMenu句柄及其其菜单中的各项目的句柄并实现点击的功能,用GetMenu可以获取到一个有效的句柄,但接着用GetSubMenu和 GetMenuItemID等API都起步到作用.网上搜了一下 ,利用获取截取消息的方法也行不通!还望高手指教!
万分感谢!
Dim ck As String
ck = "****"
hwnd2 = FindWindow(vbNullString, ck)'找到标题为****的窗口
Call EnumAllHandles(hwnd2, "So")'调用一个遍历该窗口的所有控件的函数,直道找到名为So的控件,返回hn2为该控件的句柄
SendMessage hn2, WM_CLICK, 0, 0 '模拟点击Solve按钮
单击了Solve按钮后就会弹出PopupMenu,之后无论采用何种方法都起不到作用
如,GetMessage(hwd, WM_CLICK, 0, 0),截取消息的方式也没行通
hwndsub3 = GetMenu(hn2)能返回值,但
hwndsub4 = GetSubMenu(hwndsub3, 0)马上返回0,
hwndsub5 = GetMenuItemID(hwndsub4, 1)返回-1
调用API模拟鼠标移动点击实现了这个功能 ,但该方法不靠普,求更好的方法!