簡體   English   中英

攔截C#中的Windows Vista關閉事件

[英]Intercept Windows Vista shutdown event in C#

我希望能夠攔截C#for Windows Vista中的關閉事件。 由於Vista具有高級安全功能,因此調用shutdown命令后運行的所有應用程序都將暫停並顯示在列表中,提示用戶對其執行操作。

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

謝謝。

您可以使用WPF的應用程序對象並訂閱其SessionEnding事件。 然后,您可以查看SessionEndingCancelEventArgs.ReasonSessionEnding枚舉,以確定會話結束的確切原因(LogOff或Shutdown)。

您可能希望看到的是 - Windows Vista中的應用程序關閉更改 基本上,對於你想要的,它都圍繞着WM_QUERYENDSESSION。

請注意,這是在.net框架中公開的 - 相反,您需要使用本機函數(p / invoke)並在代碼中掛鈎wndproc以響應Windows消息。

例如(顯示不關閉的原因),您可以在C#中看到Windows Vista - ShutdownBlockReasonCreate

System.Environment.HasShutdownStarted

使用該活動

WPF的Application.SessionEnding。

Microsoft.Win32.SystemEvents上的SessionEnding / SessionEnded事件可能就是您要查找的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM