我有一個外殼擴展,當另一個應用程序廣播特定窗口消息(由RegisterWindowMessage
註冊的自定義消息)時,需要重新加載其配置。如何截取外殼擴展中的窗口消息
我嘗試了幾種方法來攔截消息:
Windows資源管理器的窗口上安裝一個窗口的子類的回調,使用
SetWindowSubclass
。這適用於Window 7,但不適用於Windows 8,因爲顯然DllMain
未在主線程中調用,並且SetWindowSubclass
不能從另一個線程中使用。這是在文檔中提到:不能使用子類輔助函數的子類窗口跨線程
爲
CALLWNDPROC
安裝掛鉤,使用SetWindowsHookEx
。因爲我不想減慢整個系統的速度,所以我只爲特定線程安裝鉤子(資源管理器的主線程)。這適用於Windows 8,但不適用於Windows 7 ......我懷疑這是因爲我掛鉤了錯誤的線程,但我不確定。無論如何,這種方法似乎過分侵入。創建一個僅消息窗口來處理消息。這根本不起作用,因爲只有消息的窗口不會收到廣播的消息。
是否有一種可靠的方式在shell擴展中接收窗口消息?
窗口消息最初似乎是通知shell擴展最簡單的方法,但如果您認爲另一種機制更合適,我願意接受建議。
什麼樣的shell擴展? – 2014-11-07 07:05:38
@SimonMourier,圖標疊加和上下文菜單處理程序 – 2014-11-07 09:19:44