WM_QUERYENDSESSION Nachricht
Die WM_QUERYENDSESSION Nachricht wird gesendet, wenn der Benutzer die Sitzung beenden möchte oder wenn eine Anwendung eine der Funktionen zum Herunterfahren des Systems aufruft. Wenn eine Anwendung null zurückgibt, wird die Sitzung nicht beendet. Das System beendet das Senden WM_QUERYENDSESSION Nachrichten, sobald eine Anwendung null zurückgibt.
Nach der Verarbeitung dieser Nachricht sendet das System die WM_ENDSESSION Nachricht, wobei der wParam-Parameter auf die Ergebnisse der WM_QUERYENDSESSION Nachricht festgelegt ist.
Ein Fenster empfängt diese Meldung über seine WindowProc-Funktion .
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // not used
LPARAM lParam // logoff option
);
Parameter
-
hwnd
-
Ein Handle für das Fenster.
-
uMsg
-
Der WM_QUERYENDSESSION-Bezeichner .
-
wParam
-
Dieser Parameter ist für die zukünftige Verwendung reserviert.
-
lParam
-
Dieser Parameter kann einen oder mehrere der folgenden Werte aufweisen. Wenn dieser Parameter 0 ist, wird das System heruntergefahren oder neu gestartet (es ist nicht möglich, zu bestimmen, welches Ereignis eintritt).
Wert Bedeutung - ENDSESSION_CLOSEAPP
- 0x00000001
Die Anwendung verwendet eine Datei, die ersetzt werden muss, oder das System wird gewartet, oder die Systemressourcen sind erschöpft. Weitere Informationen finden Sie unter Richtlinien für Anwendungen. - ENDSESSION_CRITICAL
- 0x40000000
Die Anwendung muss heruntergefahren werden. - ENDSESSION_LOGOFF
- 0x80000000
Der Benutzer wird abgemeldet. Weitere Informationen finden Sie unter Abmelden. Beachten Sie, dass es sich bei diesem Parameter um eine Bitmaske handelt. Verwenden Sie einen bitweisen Vorgang, um diesen Wert zu testen. nicht auf Gleichheit testen.
Rückgabewert
Anwendungen sollten die Absichten des Benutzers berücksichtigen und TRUE zurückgeben. Standardmäßig gibt die DefWindowProc-Funktiontrue für diese Nachricht zurück.
Wenn das herunterfahren das gebrannte System oder Medium beschädigt würde, kann die Anwendung FALSE zurückgeben. Es empfiehlt sich jedoch, die Aktionen des Benutzers zu respektieren.
Bemerkungen
Wenn eine Anwendung true für diese Nachricht zurückgibt, empfängt sie die WM_ENDSESSION Nachricht, unabhängig davon, wie die anderen Anwendungen auf die WM_QUERYENDSESSION Nachricht reagieren. Jede Anwendung sollte sofort nach Empfang dieser Nachricht TRUE oder FALSE zurückgeben und alle Bereinigungsvorgänge zurückstellen, bis sie die WM_ENDSESSION Nachricht empfängt.
Anwendungen können eine Benutzeroberfläche anzeigen, die den Benutzer beim Herunterfahren zur Eingabe von Informationen auffordert. Dies wird jedoch nicht empfohlen. Nach fünf Sekunden zeigt das System Informationen zu den Anwendungen an, die das Herunterfahren verhindern, und ermöglicht es dem Benutzer, sie zu beenden. Windows XP zeigt beispielsweise ein Dialogfeld an, während Windows Vista einen Vollbildmodus mit zusätzlichen Informationen zu den Anwendungen anzeigt, die das Herunterfahren blockieren. Wenn Ihre Anwendung das Herunterfahren des Systems blockieren oder verschieben muss, verwenden Sie die Funktion ShutdownBlockReasonCreate . Weitere Informationen finden Sie unter Herunterfahren von Änderungen für Windows Vista.
Konsolenanwendungen können die SetConsoleCtrlHandler-Funktion verwenden, um eine Benachrichtigung zum Herunterfahren zu erhalten.
Dienstanwendungen können die Funktion RegisterServiceCtrlHandlerEx verwenden, um Benachrichtigungen zum Herunterfahren in einer Handlerroutine zu empfangen.
Beispiele
Ein Beispiel finden Sie unter Abmelden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) |
Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Header |
|
Siehe auch