如何检测对Windows系统托盘的更改?

2024-09-27 23:20:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Windows7VM,它运行我的强制企业通信系统(Lync和Outlook)。我想做的是在这个Windows机器上运行一个进程,它监视系统托盘并将通知发送到我的主机(Xubuntu 13.04),这样当我收到电子邮件或即时消息时就会得到通知(我已经尝试过无缝RDP来做这件事,但这不是一个有效的解决方案)。在

我可以相对轻松地处理任何面向Linux或网络的东西,但我不知道如何查询Windows系统托盘的状态(或者附加一个事件侦听器来进行状态更改)。我对C++和Python感到满意,但我会给出任何可行的解决方案。在

详细的状态信息将是更好的,但在最起码我需要能够检测到在托盘图标数量的变化。在


Tags: 机器进程电子邮件windows状态系统rdp解决方案
2条回答

在Windows上,如果安装visualstudio,在visualstudio工具中有一个很有用的工具,名为“Spy++”,它基本上是一个显示所有窗口的工具,并提供查看特定窗口接收到的消息的能力。在

enter image description here

使用这个工具,你可以看到整个面板,包括“开始按钮”、快捷方式、托盘、时钟等,都是“Shell_TrayWnd”。您可以使用“查找”菜单搜索特定窗口,只需拖动任何窗口上的“目标”。在

托盘窗口本身是“SysPager”(附件图像为000100D2),您可以记录此窗口的邮件,并查看在Outlook中接收邮件时此窗口接收的邮件类型。在

之后,您可以编写一个代码来监听这个窗口接收到的所有消息,并根据您在“Spy++”中看到的内容来确定发生了什么。在

这只是个开始。编写一个代码来获得一个窗口句柄并监听window接收到的消息是另一个部分,但我认为MSDN甚至StackOverflow已经讨论过了。 搜索特定的窗口句柄是由^{}函数完成的,为了监听消息,您必须设置一个由^{}函数完成的“钩子”。挂机在MSDN上描述得相当好。在

可能您需要Outlook检查器(http://msdn.microsoft.com/en-us/library/office/ff869356(v=office.15).aspx)。据我所知,它有助于观察事件的前景进程。在

相关问题 更多 >

    热门问题