2013-07-17 46 views
8

我有一臺運行我的強制性企業通信系統(Lync和Outlook)的Windows 7虛擬機。我想要做的是在這臺Windows機器上運行一個進程,監視系統托盤並將通知發送到我的主機(Xubuntu 13.04),以便在我收到電子郵件或即時通訊時收到通知(我已經試過了RDP做到這一點,但這是一個無效的解決方案)。我可以相對容易地處理Linux或面向網絡,我不知道該怎麼做是如何查詢Windows系統托盤的狀態(或爲狀態更改附加事件監聽器)。我對C++和Python感到滿意,但我會給出任何可行的解決方案。如何檢測對Windows系統托盤的更改?

詳細的狀態信息將是可取的,但至少我需要能夠檢測到托盤中圖標數量的變化。

回答

3

在Windows上,如果安裝了Visual Studio工具中Visual Studio中,有一個有用的工具,名爲「間諜++」,基本上它是一個工具,可以顯示你所有的窗口,並給出能夠看到特定的窗口接收的郵件。

enter image description here

使用這個工具,你可以看到整個面板,包含「開始按鈕」,快捷方式,托盤,時鐘等是「Shell_TrayWnd」。您可以使用「查找」菜單搜索特定窗口,只需在任何窗口上拖動「目標」即可。

托盤窗口本身就是「SysPager」(000100D2附圖片),您可以登錄消息這個窗口,看到在Outlook接收郵件窗口接收什麼類型的消息。

這之後,你可以寫會聽那個窗口接收所有消息的代碼,以你已經在「間諜++」看到什麼確定發生了什麼。

這只是開始。編寫一個可以獲得窗口句柄並監聽窗口接收到的消息的代碼是另一部分,但我認爲它已經在MSDN或者StackOverflow中涵蓋了。 尋找一個特定的窗口句柄是由FindWindowEx函數完成的,爲了聽取消息,你必須設置一個由「SetWindowsHookEx」函數完成的「鉤子」。 Hooking在MSDN上描述得非常好。

+3

「並聽取該窗口接收消息的另一部分,但我認爲它已經涵蓋在MSDN或甚至在StackOverflow的」 - 但是這*問題*被問。你的回答讓人希望這是可能的,但IMO不回答這個問題。 –