我希望能够拦截C#for Windows Vista中的关闭事件。由于Vista具有高级安全功能,因此调用shutdown命令后运行的所有应用程序都将暂停并显示在列表中,提示用户对其执行操作。
有没有人知道如何克服这一点以及我需要在Vista中使用哪些事件。
感谢。
答案 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事件可能正是您所寻找的。 p>