从外部应用程序访问右键单击上下文菜单

时间:2012-09-13 17:35:51

标签: c++ visual-studio-2008 mfc contextmenu

在执行一些Google-fu并搜索Stack Overflow之后,我一直无法找到访问项目的右键菜单并读取数据或从中选择项目的方法。我查找了SendMessage和PostMessage的方法

到目前为止我做了什么:

This是一个帖子的例子,如果它不使用Qt并且可以在外部应用程序上运行,那就是我想要的。当我只想查看外部应用程序的右键菜单时,我能找到的一切就是创建一个右键菜单。

我尝试使用Spy ++获取上下文菜单的句柄,但是只要我在Spy ++中选择“查找窗口”选项(这是预期的),菜单就会消失。

我能想到这样做的唯一方法是使用mouse_event来显示框,但后来我不知道从那里去哪里。我觉得这样效率也很低。

我正在处理一些遗留代码,所以我没有太多选择我可以使用的内容,如果有可能我不想使用Visual Studio 2008中未包含的库。

我正在尝试做什么:

我正在寻找一种方法来访问外部应用程序中的右键单击上下文菜单并读取其中的数据,然后选择一个项目。我觉得这应该很简单,但我的研究技巧却不尽如人意。如果有人能指出我正确的方向,我会非常感激。

感谢您阅读!

1 个答案:

答案 0 :(得分:1)

获取上下文菜单的唯一方法是让应用程序显示它。否则就不存在了。 (作为示例,您提供的另一个问题是关于可用的Windows Shell菜单)

当用户右键单击时,窗口会被发送WM_CONTEXTMENU,因此您可以使用SendMessage()来调用菜单,或者只是发送右键单击失败。

经过一段谷歌搜索后,我认为上下文菜单的类名为#32768,因此您可以使用FindWindowEx查找具有匹配类名的子窗口句柄。

获得窗口句柄后,您可以使用MN_GETHMENU消息来获取菜单句柄。

相关问题