繁体   English   中英

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

[英]How to detect changes to the Windows system tray?

我有一个运行我的强制性公司通信系统(Lync和Outlook)的Windows 7 VM。 我想做的是在此Windows计算机上运行一个进程,该进程监视系统托盘并将通知发送到我的主机(Xubuntu 13.04),以便在收到电子邮件或IM时得到通知(我已经尝试了无缝操作RDP可以做到这一点,但这是无效的解决方案)。

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

详细的状态信息将是可取的,但最起码​​,我需要能够检测出托盘中图标数量的变化。

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

在此处输入图片说明

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

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

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

这只是开始。 编写将获取窗口句柄并收听窗口接收到的消息的代码是另一部分,但是我认为MSDN甚至StackOverflow都已经介绍了该代码。 搜索特定的窗口句柄是由FindWindowEx函数完成的,为了收听消息,您必须设置由SetWindowsHookEx函数完成的“挂钩”。 在MSDN上对挂钩的描述非常好。

可能是您需要Outlook检查器( http://msdn.microsoft.com/zh-cn/library/office/ff869356(v=office.15).aspx )。 据我了解,这有助于观看事件展望过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM