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
wParam が TRUE の場合、アプリケーションはシャットダウンする必要があります。 ユーザーにメッセージを表示せずにデータを自動的に保存する必要があります (詳細については、「備考」を参照してください)。 再起動マネージャーは、アプリケーションで置き換える必要があるファイルを使用している場合、システムにサービスを提供する必要がある場合、またはシステム リソースが使い果たされたときに、このメッセージを送信します。 アプリケーションは、 RegisterApplicationRestart 関数を使用して再起動するために登録されている場合に再起動されます。 詳細については、「 アプリケーションのガイドライン」を参照してください。
wParam が FALSE の場合、アプリケーションはシャットダウンされません。- ENDSESSION_CRITICAL
- 0x40000000
アプリケーションは強制的にシャットダウンされます。 - ENDSESSION_LOGOFF
- 0x80000000
ユーザーがログオフしています。 詳細については、「 ログオフ」を参照してください。 このパラメーターはビット マスクであることに注意してください。 この値をテストするには、ビットごとの演算を使用します。等しいかどうかをテストしません。
戻り値
アプリケーションでこのメッセージを処理する場合は、0 を返す必要があります。
解説
データが保存されていないアプリケーションでは、データを一時的な場所に保存し、次回アプリケーションを起動したときに復元できます。 アプリケーションでは、データと状態を頻繁に保存することをお勧めします。たとえば、シャットダウン時に保存するデータの量を減らすために、ユーザーが開始した保存操作の間にデータを自動的に保存します。
アプリケーションは、セッションの終了時に DestroyWindow または PostQuitMessage 関数を呼び出す必要はありません。
必要条件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー |
Windows Server 2003 [デスクトップ アプリ | UWP アプリ] |
ヘッダー |
|
関連項目