3

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

到目前为止我所做的:

是这里的帖子示例,如果它不使用 Qt 并且可以在外部应用程序上工作,这正是我想要的。当我只想查看外部应用程序的右键菜单时,我所能找到的一切都是关于创建右键菜单。

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

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

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

我正在尝试做的事情:

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

感谢您的阅读!

4

1 回答 1

1

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

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

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

一旦有了窗口句柄,就可以使用MN_GETHMENU消息来获取菜单句柄。

于 2012-09-14T08:47:51.390 回答