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

C++ 如何检测对Windows系统托盘的更改?,c++,python,winapi,system-tray,C++,Python,Winapi,System Tray,我有一个Windows7VM,它运行我必须的公司通信系统(Lync和Outlook)。我想做的是在这台Windows机器上运行一个进程,该进程监视系统托盘并向我的主机(Xubuntu 13.04)发送通知,这样当我收到电子邮件或IM时就会收到通知(我已经尝试了无缝RDP,但这是一个无效的解决方案) 我可以相对轻松地处理任何面向Linux或网络的事情,但我不知道如何查询Windows系统托盘的状态(或附加事件侦听器以进行状态更改)。我对C++和Python感到满意,但我会给出任何可行的解决方案。

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

我可以相对轻松地处理任何面向Linux或网络的事情,但我不知道如何查询Windows系统托盘的状态(或附加事件侦听器以进行状态更改)。我对C++和Python感到满意,但我会给出任何可行的解决方案。
详细的状态信息会更好,但至少我需要能够检测托盘中图标数量的变化。

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

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

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

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


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

可能您需要Outlook inspector()。据我所知,观看outlook进程中的事件会有所帮助。

“并收听window接收到的消息是另一部分,但我认为MSDN甚至StackOverflow中已经介绍了这一点”——但这就是要问的问题。你的回答给了我们希望,这是可能的,但国际海事组织没有回答这个问题。