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

时间:2013-07-17 14:55:39

标签: c++ python winapi system-tray

我有一台运行强制企业通信系统(Lync和Outlook)的Windows 7 VM。我想做的是在这台Windows机器上运行一个进程监视系统托盘并向我的主机发送通知(Xubuntu 13.04),以便在收到电子邮件或IM时通知我(我已经尝试过无缝) RDP要做到这一点,但这是一个无效的解决方案。)

我可以相对轻松地处理Linux或面向网络的任何内容,我不知道该怎么做是如何查询Windows系统托盘的状态(或附加事件监听器以进行状态更改)。我对C ++和Python很满意,但我会给出任何可行的解决方案。

详细的状态信息会更好,但至少我需要能够检测到托盘中图标数量的变化。

2 个答案:

答案 0 :(得分:3)

在Windows上,如果安装Visual Studio,在Visual Studio Tools中有一个名为“Spy ++”的有用工具,基本上它是一个工具,可以显示所有窗口,并能够查看特定窗口接收的消息。

enter image description here

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

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

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

这只是为了开始。编写一个代码来获取窗口句柄并监听窗口接收的消息是另一个部分,但我认为它已经在MSDN甚至StackOverflow中得到了解决。 搜索特定窗口句柄由FindWindowEx函数完成,为了收听消息,您必须设置由SetWindowsHookEx函数完成的“挂钩”。在MSDN上描述了很好的挂钩。

答案 1 :(得分:0)

可能需要Outlook检查器(http://msdn.microsoft.com/en-us/library/office/ff869356(v=office.15).aspx)。据我了解,观看活动展望流程会有所帮助。