2011-04-26 40 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

相关问题