WM_ENDSESSION メッセージ

WM_ENDSESSION メッセージは、システムがWM_QUERYENDSESSION メッセージの結果を処理した後にアプリケーションに送信されます。 WM_ENDSESSION メッセージは、セッションが終了しているかどうかをアプリケーションに通知します。

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

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

パラメーター

hwnd

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

uMsg

WM_ENDSESSION識別子。

wParam

セッションが終了している場合、このパラメーターは TRUE です。セッションは、すべてのアプリケーションがこのメッセージの処理から戻った後、いつでも終了できます。 それ以外の場合は FALSE です

lParam

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

意味
ENDSESSION_CLOSEAPP
0x1
wParamTRUE の場合、アプリケーションはシャットダウンする必要があります。 ユーザーにメッセージを表示せずにデータを自動的に保存する必要があります (詳細については、「備考」を参照してください)。 再起動マネージャーは、アプリケーションで置き換える必要があるファイルを使用している場合、システムにサービスを提供する必要がある場合、またはシステム リソースが使い果たされたときに、このメッセージを送信します。 アプリケーションは、 RegisterApplicationRestart 関数を使用して再起動するために登録されている場合に再起動されます。 詳細については、「 アプリケーションのガイドライン」を参照してください。
wParamFALSE の場合、アプリケーションはシャットダウンされません。
ENDSESSION_CRITICAL
0x40000000
アプリケーションは強制的にシャットダウンされます。
ENDSESSION_LOGOFF
0x80000000
ユーザーがログオフしています。 詳細については、「 ログオフ」を参照してください。

 

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

戻り値

アプリケーションでこのメッセージを処理する場合は、0 を返す必要があります。

解説

データが保存されていないアプリケーションでは、データを一時的な場所に保存し、次回アプリケーションを起動したときに復元できます。 アプリケーションでは、データと状態を頻繁に保存することをお勧めします。たとえば、シャットダウン時に保存するデータの量を減らすために、ユーザーが開始した保存操作の間にデータを自動的に保存します。

アプリケーションは、セッションの終了時に DestroyWindow または PostQuitMessage 関数を呼び出す必要はありません。

必要条件

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

関連項目

ログオフ

シャットダウン

DestroyWindow

PostQuitMessage

SetProcessShutdownParameters

WM_QUERYENDSESSION