8

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

任何面向 Linux 或网络的东西我都可以相对轻松地处理,我不知道如何做的是如何查询 Windows 系统托盘的状态(或为状态更改附加事件侦听器)。我对 C++ 和 Python 很满意,但我会尝试任何可行的解决方案。

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

4

2 回答 2

3

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

在此处输入图像描述

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

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

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

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

于 2013-07-17T16:02:03.263 回答
0

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

于 2014-09-02T10:20:32.590 回答