模拟右键单击系统托盘图标,然后单击C ++中的上下文菜单

时间:2014-01-24 15:06:41

标签: c++ user-interface automation contextmenu notification-area

我是一名Python开发人员,对C ++知之甚少。

话虽如此,我想了解如何右键单击系统托盘图标,然后单击上下文菜单中的其中一个选项。

我环顾互联网,无法找到可以让我获得相对于“通知区域”的系统托盘图标位置的东西。此外,我可以获取托盘图标的按钮文本。

我使用ToolbarWindow32获得了FindWindowEx的句柄。

我尝试使用WM_RBUTTONDOWNWM_RBUTTONUPToolbarWindow32发送到带有X和Y坐标的SendMessage句柄,但没有任何反应。

我完全忘记了如何右键单击图标,获取上下文菜单信息,然后使用它,点击其中一个选项。

1 个答案:

答案 0 :(得分:0)

在我的研究之后,没有办法向系统托盘图标发送点击消息,至少不是通过我尝试过的任何API。这样做的最好方法就是我关注的方法如下:

  1. 您将消息TB_GETBUTTON发送到工具栏。
  2. 这将为您检索的按钮检索一个“idCommand”,这样您就可以使用循环来获取TBBUTTON结构中的所有“idCommand”。
  3. 使用idComman,您可以使用工具栏手柄向工具栏按钮发送消息,以使用TB_RECT消息获取图标的尺寸。
  4. 一旦你知道按钮的尺寸,你只需要获得工具栏的尺寸,这很简单,因为它只是一个窗口,你可以使GetWindowRect
  5. 现在最后一步是你要发送你拨打win32api.mouse_event的点击,其中x为:工具栏的左边界+图标宽度的一半,y为:顶边工具栏+图标高度的一半。 (所以你将点击发送到中心)。

    希望它有所帮助! 我问了一个类似的问题并回答了here