2011-03-02 49 views

回答

1

Shell_NotifyIcon作品發送特殊WM_COPYDATA message to the taskbar,如果注入到Explorer和子類,你可以抓住這個消息的任務欄,然後你可以通過調用GetWindowThreadProcessId上COPYDATAstruct.NOTIFYICONDATA.hwnd得到的進程ID。

...當然,這是一個黑客攻擊,依賴於可能在任何時候都會改變的無證信息!

+0

如果你打算依賴無證的實現細節,爲什麼還要花費所有的時間呢?您可以直接通過TB_GETBUTTON和ReadProcessMemory(http://www.ureader.com/msg/14841415.aspx) – Luke 2011-03-02 13:35:31

+0

@Luke讀取內部結構:並且可以在Win7上使用隱藏的項目嗎? – Anders 2011-03-02 15:38:41

+0

工具欄類支持隱藏按鈕,但我想這將取決於資源管理器如何實現隱藏的圖標(它是一個隱藏的按鈕或根本沒有按鈕?)。只有一種方法可以找出答案。 – Luke 2011-03-02 18:29:09

1

我不相信這是可能的。當然,Spy ++報告通知區域是一個名爲「用戶推薦通知區域」的窗口。此窗口最終會與桌面窗口關聯,並且與創建通知圖標的進程沒有明顯關聯。


好了,由可能我的意思是可以不訴諸黑客像安德斯表明這是毫無疑問可行的,但不是我想象中的OP正在尋找!

+0

那麼,這個問題被標記爲調試。回到當天,有一個名爲TraySaver的產品做了這個,一些MS KB文章甚至連接到它=) – Anders 2011-03-02 13:13:53

+0

@Anders我把調試標籤意味着OP正在試圖找出許多是哪個過程運行是負責該圖標的人。如果是我,我會在Process Explorer中查看描述和公司名稱,並查看是否可以找到匹配項。然後我會殺死這個進程,看看圖標是否消失! – 2011-03-02 14:49:34

1

我剛剛意識到,在Windows 7中,「選擇哪些圖標和通知出現在任務欄上」菜單在這裏有所幫助。通過右鍵單擊任務欄找到它,轉到「屬性」,然後單擊「通知區域」框架中的「自定義...」按鈕。

該窗口中的每一行代表Windows資源管理器已經看到的任務欄圖標。在左邊的兩個rwos中,我相信最上面的是過程的描述,如任務管理器中所示,最下面的是顯示任務欄圖標的窗口的窗口標題。

這將幫助我追蹤我原來的問題! VisualSVN彈出一個'註冊我!儘管沒有明顯的VisualSVN進程正在運行,但系統托盤中仍然有一點麻煩。最後我注意到,當我關閉Visual Studio時,這個煩人的窗口消失了,所以顯然在Visual Studio中加載的VisualSVN加載項DLL正在創建nag窗口。