できれば Windows API を使用して、アプリケーションから OS のシャットダウンを検出 (および、必要に応じて 2. 中止) できるようにしたいと考えています。
コマンドを使用してシャットダウンを手動で中止できることはわかっていshutdown -a
ます。
OSがシャットダウンしようとしていることをプログラムで通知するだけで十分かもしれません-これを行う方法は?
できれば Windows API を使用して、アプリケーションから OS のシャットダウンを検出 (および、必要に応じて 2. 中止) できるようにしたいと考えています。
コマンドを使用してシャットダウンを手動で中止できることはわかっていshutdown -a
ます。
OSがシャットダウンしようとしていることをプログラムで通知するだけで十分かもしれません-これを行う方法は?
MSDNから:
WM_QUERYENDSESSION
メッセージは、ユーザーがセッションの終了を選択したとき、またはアプリケーションがシステム シャットダウン関数のいずれかを呼び出したときに送信されます。いずれかのアプリケーションがゼロを返した場合、セッションは終了しません。WM_QUERYENDSESSION
1 つのアプリケーションがゼロを返すとすぐに、システムはメッセージの送信を停止します。
したがって、私のアプリケーションの WindowProc はWM_QUERYENDSESSION
メッセージを処理して を返します0
。
こんなに簡単だとは思っていませんでした。おまけとして、Windows 2000 でも動作します。
シャットダウンをブロックするために「単純に」0を返すことに関しては、適切な方法でそれを行いたい場合ほど単純ではありません。特にVistaでは。たとえば、http://msdn.microsoft.com/en-us/library/ms700677(VS.85).aspxもお読みください。