单击系统托盘图标Python Win32

时间:2014-02-11 15:46:03

标签: python winapi click toolbar system-tray

环境:我在Windows 7 64位上使用Python 2.7(32位)。我正在使用win32 Api制作一个Windows自动化工具(我知道有一些存在,但我正在制作自己的工具)。

问题:我被困在Windows 系统托盘(通知区域),我可以访问工具栏,我可以使用TB_GETBUTTON来获取工具栏按钮信息,但我遇到两件事有困难:

1)如何左/右单击通知栏中的图标?有没有办法通过向工具栏句柄发送消息来执行此操作,或者我需要获取位置并发送单击。如果是最后一种情况,我如何获得图标相对于屏幕的确切位置? (GetRect不帮助它返回top = 0和left = 2,这与屏幕无关)。

2)如何访问通知中的隐藏图标,我可以单击按钮弹出菜单但我不知道如何访问图标/按钮,比如“右键单击”图标和打开他们的上下文菜单并完成它。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

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

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