実行中のアプリケーションがあり、ユーザーがシステムをシャットダウンするコマンドを発行しましたが、アプリケーションが実行されるまでシャットダウンを延期したいと考えています。アプリケーションの作業が完了したら、システムをシャットダウンする必要があります。
2 に答える
話しているWindowsのバージョンによって異なります。Windows XP では、シャットダウンをブロックするために応答できる WM_QUERYENDSESSION のようなメッセージがあります。(あなたはコンソール アプリなので、コンソール アプリケーションがまだ実行されている間にこれを行うには、おそらく小さなウィンドウ アプリを生成する必要があります。)
しかし、Vista では、アプリケーションがシャットダウンをブロックすることが難しくなりました。(Microsoft はまったくできないと主張していますが、私は確かに Visual Studio 2010 がそれを行うのを見てきました。) 約 5 秒間シャットダウンを遅らせることができます (ただし、他の多くのアプリがたくさんのことをしようとしている可能性があることを覚えておいてください)。の同じ 5 秒間のもの)。その時点で、適切にシャットダウンされていないすべてのアプリを示す UI がユーザーに表示されます。Vista+ ではShutdownBlockReasonCreate
、アプリケーションを中断することがなぜ悪い考えなのかをユーザーに知らせるために を呼び出すことができますが、それによってユーザーが中断することを実際に止めることはできません。
shutdownに対処する方法を理解するための MSDN へのエントリ ポイントは次のとおりです。
Windows がシャットダウンされると、WM_QUERYENDSESSION が送信され、アプリケーションは現在の状態に応じて TRUE または FALSE を返します。このメッセージについて私はそれを見つけました: http://msdn.microsoft.com/en-us/library/ms700677(v=vs.85).aspx
多分それはあなたを助ける