拦截C#中的Windows Vista关闭事件

时间:2008-09-29 13:52:43

标签: c# windows events windows-vista

我希望能够拦截C#for Windows Vista中的关闭事件。由于Vista具有高级安全功能,因此调用shutdown命令后运行的所有应用程序都将暂停并显示在列表中,提示用户对其执行操作。

有没有人知道如何克服这一点以及我需要在Vista中使用哪些事件。

感谢。

5 个答案:

答案 0 :(得分:6)

您可以使用WPF的应用程序对象并订阅其SessionEnding事件。然后,您可以查看SessionEndingCancelEventArgs.ReasonSessionEnding枚举,以确定会话结束的确切原因(LogOff或Shutdown)。

答案 1 :(得分:5)

您可能希望看到的是Application Shutdown Changes in Windows Vista。基本上,对于你想要的东西,它都围绕着WM_QUERYENDSESSION。

请注意,这是在.net框架中公开的 - 而是需要使用本机函数(p / invoke)并在代码中挂钩wndproc以响应Windows消息。

有关示例(显示未关闭的原因),您可以看到Windows Vista - ShutdownBlockReasonCreate in C#

答案 2 :(得分:0)

System.Environment.HasShutdownStarted

答案 3 :(得分:0)

使用活动

WPF的Application.SessionEnding。

答案 4 :(得分:0)

Microsoft.Win32.SystemEvents上的SessionEnding / SessionEnded事件可能正是您所寻找的。