2011-04-26 84 views
1

首先,我想告訴你,我搜索了很多,這不是重複的問題。 我的問題是,我想要捕獲Windows事件(SystemEvents)時觸發,但從Windows服務應用程序。我按照這個例子http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.aspx。它表示服務需要具有消息循環(上例中的MessagePump)來處理所有這些事件(登錄,註銷,電源事件等)。問題是這個例子在Windows XP下工作得很好,但是對於Windows 7來說,這些事件都沒有被捕獲。 有沒有人有解決這個問題的辦法?我讀了一些我需要使用SENS(系統事件通知服務)的地方。你能把我指向正確的方向嗎?謝謝。Windows 7 SystemEvents趕上登錄/註銷服務應用程序

回答

1

我自己找到了解決方案。 SENS在Windows 7下無法使用。WTS Api是關鍵。如果有人有興趣,我可以發佈解決方案。不管怎麼說,還是要謝謝你 :)。

+0

如果沒有太多的努力,我會很感激,如果你可以發佈解決方案供將來參考,特別是對任何人通過搜索引擎在這個頁面上絆倒。謝謝! – 2011-04-29 11:15:01

+1

您需要使用帶有NOTIFY_FOR_ALL_SESSIONS標誌的WTSRegisterSessionNotification。一旦訂閱了此API,您的服務將能夠接收SystemEvents。你也可以覆蓋默認的WndProc並處理WTS_SESSION_CHANGE消息。 – zlat 2011-04-29 17:31:20