在C#中截获Windows Vista关闭事件
本文关键字:Vista 事件 Windows | 更新日期: 2023-09-27 17:48:51
我希望能够在C#中拦截Windows Vista的关闭事件。由于Vista具有高级安全功能,在调用关机命令后运行的任何应用程序都会被暂停并显示在列表中,提示用户对其执行操作。
有人知道如何克服这个问题吗?我需要在Vista中使用什么事件。
谢谢。
您可以使用WPF的应用程序对象并订阅其SessionEnding事件。然后,您可以查看SessionEndingCancelEventArgs。ReasonSessionEnding枚举,以确定会话结束的确切原因(注销或关闭)。
您可能想看看这里-Windows Vista中的应用程序关闭更改。基本上,为了你想要什么,它都围绕着WM_QUERYENDESSION。
请注意,这是在.net框架中公开的-相反,您需要使用本机函数(p/invoke)并挂接代码中的wndproc来响应windows消息。
例如(显示不关闭的原因),您可以在C#中看到WindowsVista-ShutdownBlockReasonCreate。
使用事件
应用程序。WPF的会话结束。
Microsoft上的SessionEnding/SessionEnded事件。Win32.SystemEvents可能就是您想要的。
System.Environment.HasShutdownStarted