mensaje de WM_QUERYENDSESSION
El mensaje WM_QUERYENDSESSION se envía cuando el usuario elige finalizar la sesión o cuando una aplicación llama a una de las funciones de apagado del sistema. Si alguna aplicación devuelve cero, la sesión no finaliza. El sistema deja de enviar mensajes WM_QUERYENDSESSION en cuanto una aplicación devuelve cero.
Después de procesar este mensaje, el sistema envía el mensaje WM_ENDSESSION con el parámetro wParam establecido en los resultados del mensaje WM_QUERYENDSESSION .
Una ventana recibe este mensaje a través de la función WindowProc.
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // not used
LPARAM lParam // logoff option
);
Parámetros
-
hwnd
-
Un identificador de la ventana.
-
uMsg
-
Identificador de WM_QUERYENDSESSION .
-
wParam
-
Este parámetro se reserva para uso futuro.
-
lParam
-
Este parámetro puede ser uno o más de los siguientes valores. Si este parámetro es 0, el sistema se apaga o reinicia (no es posible determinar qué evento se está produciendo).
Value Significado - ENDSESSION_CLOSEAPP
- 0x00000001
La aplicación usa un archivo que se debe reemplazar, se está agotando el sistema o se agotan los recursos del sistema. Para obtener más información, vea Directrices para aplicaciones. - ENDSESSION_CRITICAL
- 0x40000000
La aplicación se ve obligada a apagarse. - ENDSESSION_LOGOFF
- 0x80000000
El usuario inicia sesión. Para obtener más información, vea Cerrar sesión. Tenga en cuenta que este parámetro es una máscara de bits. Para probar este valor, use una operación bit a bit; no pruebe la igualdad.
Valor devuelto
Las aplicaciones deben respetar las intenciones del usuario y devolver TRUE. De forma predeterminada, la función DefWindowProc devuelve TRUE para este mensaje.
Si el apagado dañaría el sistema o el medio que se está quemando, la aplicación puede devolver FALSE. Sin embargo, se recomienda respetar las acciones del usuario.
Observaciones
Cuando una aplicación devuelve TRUE para este mensaje, recibe el mensaje WM_ENDSESSION , independientemente de cómo responden las demás aplicaciones al mensaje WM_QUERYENDSESSION . Cada aplicación debe devolver TRUE o FALSE inmediatamente después de recibir este mensaje y aplazar las operaciones de limpieza hasta que reciba el mensaje WM_ENDSESSION .
Las aplicaciones pueden mostrar una interfaz de usuario que solicite al usuario información durante el apagado, pero no se recomienda. Después de cinco segundos, el sistema muestra información sobre las aplicaciones que impiden el apagado y permite al usuario finalizarlas. Por ejemplo, Windows XP muestra un cuadro de diálogo, mientras que Windows Vista muestra una pantalla completa con información adicional sobre el bloqueo del apagado de las aplicaciones. Si la aplicación debe bloquear o posponer el apagado del sistema, use la función ShutdownBlockReasonCreate . Para obtener más información, vea Cambios de apagado para Windows Vista.
Las aplicaciones de consola pueden usar la función SetConsoleCtrlHandler para recibir una notificación de apagado.
Las aplicaciones de servicio pueden usar la función RegisterServiceCtrlHandlerEx para recibir notificaciones de apagado en una rutina de controlador.
Ejemplos
Para obtener un ejemplo, vea Cerrar sesión.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows XP [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible |
Windows Server 2003 [aplicaciones de escritorio | Aplicaciones para UWP] |
Encabezado |
|
Consulte también