我一直在尋找相當長的一段時間,似乎無法找到一個好方法來做到這一點。我基本上有一個使用WPF(沒有可見窗口)的C#進程,我需要處理WM_事件(例如WM_CLOSE
或WM_DESTROY
,例如;這樣我可以在用戶選擇註銷時優雅地關閉或重新啓動他們的機器)。在無窗口的C#進程中處理WM_事件
有一些解決方案,我見過有使用System.Windows.InteropServices
調用AddHook
,併爲其提供一個指向一個函數,則成爲WndProc
暗示的。就我所知,這個問題依賴於實際可見的窗口(在這種情況下,沒有窗口)。
另一種建議但不起作用的方法是覆蓋WinForm的WndProc
方法,但該進程沒有可見的窗體或窗口。
我也發現了一些涉及到消息窗口的東西。某種仍然接收WM_事件的不可見窗口。從我所看到的情況來看,這隻適用於Microsoft.WindowsCE.Forms
組件。我在我的項目和子類MessageWindow中添加了對此程序集的引用,如http://msdn.microsoft.com/en-us/library/microsoft.windowsce.forms.messagewindow.aspx所示,但似乎仍然無效。 WndProc內部的斷點沒有被擊中。
任何線索?
已經有一段時間,因爲我已經在那個水平上玩過,但我似乎記得使用0作爲HWND(我似乎記得閱讀某處是桌面的HWND)。我不得不挖掘我的檔案來驗證,但我幾乎肯定這工作。 – 2012-03-06 00:26:06