7

Windows Vista の C# でシャットダウン イベントをインターセプトできるようにしたいと考えています。Vista の高度なセキュリティ機能により、shutdown コマンドが呼び出された後に実行されているアプリケーションはすべて停止され、リストに表示され、ユーザーはそれらを操作するように求められます。

これを克服する方法と、Vista で使用する必要があるイベントを知っている人はいますか?

ありがとう。

4

5 に答える 5

6

WPF のアプリケーション オブジェクトを使用して、その SessionEnding イベントをサブスクライブできます。次に、SessionEndingCancelEventArgs.ReasonSessionEnding列挙を調べて、セッションが終了する理由 (LogOff または Shutdown) を正確に判断できます。

于 2008-09-29T14:06:40.717 に答える
5

あなたが見たいと思うかもしれないものはここにあります - Windows Vistaのアプリケーションシャットダウンの変更. 基本的に、あなたが望むもののために、それはすべて WM_QUERYENDSESSION を中心に展開します。

これは .net フレームワークで公開されていることに注意してください。代わりに、ネイティブ関数 (p/invoke) を使用し、コードで wndproc をフックして Windows メッセージに応答する必要があります。

例 (シャットダウンしない理由を示す) については、Windows Vista - ShutdownBlockReasonCreate in C#を参照してください。

于 2008-09-29T14:07:28.593 に答える
0

イベントを利用する

WPF の Application.SessionEnding。

于 2008-09-29T14:09:18.353 に答える
0

Microsoft.Win32.SystemEvents の SessionEnding / SessionEnded イベントが探しているものかもしれません。

于 2008-09-29T14:11:25.727 に答える
0
System.Environment.HasShutdownStarted
于 2008-09-29T14:01:03.210 に答える