WM_QUERYENDSESSION message
Le message WM_QUERYENDSESSION est envoyé lorsque l’utilisateur choisit de mettre fin à la session ou lorsqu’une application appelle l’une des fonctions d’arrêt du système. Si une application retourne zéro, la session n’est pas terminée. Le système cesse d’envoyer des messages WM_QUERYENDSESSION dès qu’une application retourne zéro.
Après avoir traité ce message, le système envoie le message WM_ENDSESSION avec le paramètre wParam défini sur les résultats du message WM_QUERYENDSESSION .
Une fenêtre reçoit ce message via sa fonction WindowProc.
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // not used
LPARAM lParam // logoff option
);
Paramètres
-
Hwnd
-
Handle de la fenêtre.
-
uMsg
-
Identificateur WM_QUERYENDSESSION .
-
wParam
-
Ce paramètre est réservé à un usage futur.
-
lParam
-
Ce paramètre peut prendre une ou plusieurs des valeurs suivantes. Si ce paramètre a la valeur 0, le système s’arrête ou redémarre (il n’est pas possible de déterminer l’événement qui se produit).
Valeur Signification - ENDSESSION_CLOSEAPP
- 0x00000001
L’application utilise un fichier qui doit être remplacé, le système est en cours de maintenance ou les ressources système sont épuisées. Pour plus d’informations, consultez Recommandations pour les applications. - ENDSESSION_CRITICAL
- 0x40000000
L’application est forcée de s’arrêter. - ENDSESSION_LOGOFF
- 0x80000000
L’utilisateur se déconnecte. Pour plus d’informations, consultez Déconnexion. Notez que ce paramètre est un masque de bits. Pour tester cette valeur, utilisez une opération de bits ; ne testent pas l’égalité.
Valeur retournée
Les applications doivent respecter les intentions de l’utilisateur et retourner TRUE. Par défaut, la fonction DefWindowProc retourne TRUE pour ce message.
Si l’arrêt endommage le système ou le média en cours de gravure, l’application peut retourner FALSE. Toutefois, il est recommandé de respecter les actions de l’utilisateur.
Remarques
Lorsqu’une application retourne TRUE pour ce message, elle reçoit le message WM_ENDSESSION , quelle que soit la façon dont les autres applications répondent au message WM_QUERYENDSESSION . Chaque application doit retourner TRUE ou FALSE immédiatement après la réception de ce message, et différer toutes les opérations de nettoyage jusqu’à ce qu’elle reçoive le message WM_ENDSESSION .
Les applications peuvent afficher une interface utilisateur invitant l’utilisateur à fournir des informations au moment de l’arrêt, mais cela n’est pas recommandé. Après cinq secondes, le système affiche des informations sur les applications qui empêchent l’arrêt et permettent à l’utilisateur de les arrêter. Par exemple, Windows XP affiche une boîte de dialogue, tandis que Windows Vista affiche un plein écran avec des informations supplémentaires sur les applications qui bloquent l’arrêt. Si votre application doit bloquer ou reporter l’arrêt du système, utilisez la fonction ShutdownBlockReasonCreate . Pour plus d’informations, consultez Changements d’arrêt pour Windows Vista.
Les applications console peuvent utiliser la fonction SetConsoleCtrlHandler pour recevoir une notification d’arrêt.
Les applications de service peuvent utiliser la fonction RegisterServiceCtrlHandlerEx pour recevoir des notifications d’arrêt dans une routine de gestionnaire.
Exemples
Pour obtenir un exemple, consultez Déconnexion.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows XP [applications de bureau | Applications UWP] |
Serveur minimal pris en charge |
Windows Server 2003 [applications de bureau | Applications UWP] |
En-tête |
|
Voir aussi