【问题标题】:Accessing a right click context menu from an external application从外部应用程序访问右键单击上下文菜单
【发布时间】:2012-09-13 17:35:50
【问题描述】:

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

到目前为止我做了什么:

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

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

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

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

我想要做什么:

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

感谢您的阅读!

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      相关资源
      最近更新 更多