找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 9612|回复: 6

[求助] 如何获得外部程序右键菜单的句柄

 火.. [复制链接]

1

主题

1

回帖

0

精华

初来乍到

积分
18
发表于 2010-4-3 18:27:59 | 显示全部楼层 |阅读模式
用getmenu无法获得,请问有什么别的办法吗?

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2010-4-4 14:35:13 | 显示全部楼层
貌似比较麻烦

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

也许只有HOOK一下TrackPopupMenu函数了,这可不容易啊....
我就是嗷嗷叫的老马了......

1

主题

1

回帖

0

精华

初来乍到

积分
18
 楼主| 发表于 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
以上代码实现在指定的位置弹出右键菜单。
再后我要执行移动到菜单项时,菜单会在我移动的位置弹出。

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2010-4-6 01:01:25 | 显示全部楼层
这个怕是比较麻烦

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

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

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

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

看你这东东应用的范围了.
我就是嗷嗷叫的老马了......

76

主题

375

回帖

0

精华

铜牌会员

积分
231
发表于 2010-4-7 00:00:12 | 显示全部楼层
关注.

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

76

主题

375

回帖

0

精华

铜牌会员

积分
231
发表于 2010-4-10 21:37:48 | 显示全部楼层
得到基本上也没什么用, 跨进程了, 这些东西就没用了

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2010-4-10 22:56:50 | 显示全部楼层
曾经见到过一个跨进程子类化的DLL,挺好用的.

不过微软禁止跨进程子类化,还是有他的道理的.只是我们要用到的时候,麻烦了.....
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表