vbplay 发表于 2010-4-3 18:27:59

如何获得外部程序右键菜单的句柄

用getmenu无法获得,请问有什么别的办法吗?

马大哈 发表于 2010-4-4 14:35:13

貌似比较麻烦

消息里看了一下,不是很确定能否得到.

也许只有HOOK一下TrackPopupMenu函数了,这可不容易啊....

vbplay 发表于 2010-4-4 20:39:15

我是想模拟点击外部程序的右键菜单,我把菜单弹出前所有子句柄和弹出菜单后作对比,没有找到菜单的句柄。
Call SetCursorPos(TempRect.x + 20, TempRect.y + 5)
mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
以上代码实现在指定的位置弹出右键菜单。
再后我要执行移动到菜单项时,菜单会在我移动的位置弹出。

马大哈 发表于 2010-4-6 01:01:25

这个怕是比较麻烦

我一时也想不到有什么好办法取得这个菜单

从API建立弹出式菜单的角度来讲,只有拦截API是最可靠的了,但是却很麻烦,还不一定稳定.

只有一个折中的办法,就是根据菜单项的高度,估算欲点击的项所在的坐标区域,再发送单击.....

但这样的话又受不同机器外观样式不同的影响.

看你这东东应用的范围了.

everyone 发表于 2010-4-7 00:00:12

关注.

此事貌似没有简单的解决办法.

everyone 发表于 2010-4-10 21:37:48

得到基本上也没什么用, 跨进程了, 这些东西就没用了

马大哈 发表于 2010-4-10 22:56:50

曾经见到过一个跨进程子类化的DLL,挺好用的.

不过微软禁止跨进程子类化,还是有他的道理的.只是我们要用到的时候,麻烦了.....
页: [1]
查看完整版本: 如何获得外部程序右键菜单的句柄