在C#中截获Windows Vista关闭事件

本文关键字:Vista 事件 Windows | 更新日期: 2023-09-27 17:48:51

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

有人知道如何克服这个问题吗?我需要在Vista中使用什么事件。

谢谢。

在C#中截获Windows 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