WM_QUERYENDSESSION メッセージ

WM_QUERYENDSESSION メッセージは、ユーザーがセッションの終了を選択したとき、またはアプリケーションがシステムシャットダウン機能のいずれかを呼び出すときに送信されます。 アプリケーションが 0 を返した場合、セッションは終了しません。 システムは、1 つのアプリケーションから 0 が返されるとすぐに 、WM_QUERYENDSESSION メッセージの送信を停止します。

このメッセージを処理した後、システムは wParam パラメーターをWM_QUERYENDSESSION メッセージの結果に設定して、WM_ENDSESSION メッセージを送信します。

ウィンドウは、WindowProc 関数を介してこのメッセージを受け取ります。

LRESULT CALLBACK WindowProc( 
  HWND hwnd,      // handle to window 
  UINT uMsg,      // message identifier 
  WPARAM wParam,  // not used 
  LPARAM lParam   // logoff option
);

パラメーター

hwnd

ウィンドウへのハンドル。

uMsg

WM_QUERYENDSESSION識別子。

wParam

このパラメーターは将来使用するために予約されています。

lParam

このパラメーターには、次の 1 つ以上の値を指定できます。 このパラメーターが 0 の場合、システムはシャットダウンまたは再起動しています (発生しているイベントを特定することはできません)。

意味
ENDSESSION_CLOSEAPP
0x00000001
アプリケーションは、置き換える必要があるファイルを使用しているか、システムが処理されているか、システム リソースが使い果たされています。 詳細については、「 アプリケーションのガイドライン」を参照してください。
ENDSESSION_CRITICAL
0x40000000
アプリケーションは強制的にシャットダウンされます。
ENDSESSION_LOGOFF
0x80000000
ユーザーがログオフしています。 詳細については、「 ログオフ」を参照してください。

 

このパラメーターはビット マスクであることに注意してください。 この値をテストするには、ビットごとの演算を使用します。等しいかどうかをテストしないでください。

戻り値

アプリケーションはユーザーの意図を尊重し、 TRUE を返す必要があります。 既定では、 DefWindowProc 関数は、このメッセージに対して TRUE を 返します。

シャットダウンすると、書き込み中のシステムまたはメディアが破損する場合、アプリケーションは FALSE を返すことができます。 ただし、ユーザーのアクションを尊重することをお勧めします。

注釈

アプリケーションがこのメッセージに対して TRUE を 返すと、他のアプリケーションが WM_QUERYENDSESSION メッセージに応答する方法に関係なく、 WM_ENDSESSION メッセージを受け取ります。 各アプリケーションは、このメッセージを受信するとすぐに TRUE または FALSE を 返し、 WM_ENDSESSION メッセージを受信するまでクリーンアップ操作を延期する必要があります。

アプリケーションでは、シャットダウン時にユーザーに情報を求めるユーザー インターフェイスを表示できますが、推奨されません。 5 秒後、システムはシャットダウンを妨げているアプリケーションに関する情報を表示し、ユーザーがアプリケーションを終了できるようにします。 たとえば、Windows XP ではダイアログ ボックスが表示され、Windows Vista では、シャットダウンをブロックしているアプリケーションに関する追加情報を含む全画面表示が表示されます。 アプリケーションでシステムのシャットダウンをブロックまたは延期する必要がある場合は、 ShutdownBlockReasonCreate 関数を使用します。 詳細については、「 Windows Vista のシャットダウンの変更」を参照してください。

コンソール アプリケーションでは 、SetConsoleCtrlHandler 関数を 使用してシャットダウン通知を受け取ることができます。

サービス アプリケーションでは、 RegisterServiceCtrlHandlerEx 関数を使用して、ハンドラー ルーチンでシャットダウン通知を受け取ることができます。

例については、「 ログオフ」を参照してください。

必要条件

要件
サポートされている最小のクライアント
Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー
Windows Server 2003 [デスクトップ アプリ | UWP アプリ]
ヘッダー
WinUser.h (Windows.h を含む)

関連項目

ログオフ

シャットダウン

DefWindowProc

ExitWindows

SetProcessShutdownParameters

WM_ENDSESSION