Cerrando
Hay tres maneras de que una aplicación apague los equipos locales o remotos:
- apagar el sistema
- apagar el sistema y reiniciarlo
- apagar la aplicación, apagar y reiniciar el sistema, y reiniciar las aplicaciones que se han registrado para reiniciar
Para apagar el sistema, use la función ExitWindowsEx con la marca EWX_SHUTDOWN. Para obtener un ejemplo, vea Cómo apagar el sistema. Para apagar y reiniciar el sistema, use la marca EWX_REBOOT. Para reiniciar las aplicaciones que se han registrado para reiniciar con la función RegisterApplicationRestart , use la marca EXW_RESTARTAPPS.
Las funciones InitiateShutdown, InitiateSystemShutdown e InitiateSystemShutdownEx inician un temporizador y muestran un cuadro de diálogo que pide al usuario que cierre la sesión. Mientras se muestra este cuadro de diálogo, la función AbortSystemShutdown puede detener el temporizador e impedir que el equipo se apague. Sin embargo, si el temporizador expira, el equipo se apaga. Estas funciones también pueden reiniciar el equipo después de una operación de apagado. Para obtener más información, vea Mostrar el cuadro de diálogo Apagar.
Notificaciones de apagado
Las aplicaciones con una ventana y cola de mensajes reciben notificaciones de apagado a través de los mensajes de WM_QUERYENDSESSION y WM_ENDSESSION . Estas aplicaciones deben devolver TRUE para indicar que se pueden finalizar. Las aplicaciones no deben bloquear el apagado del sistema a menos que sea absolutamente necesario. Las aplicaciones deben realizar cualquier limpieza necesaria durante el procesamiento de WM_ENDSESSION. Las aplicaciones que tienen datos no guardados podrían guardar los datos en una ubicación temporal y restaurarlos la próxima vez que se inicie la aplicación. Se recomienda que las aplicaciones guarden sus datos y su estado con frecuencia; por ejemplo, guarde automáticamente los datos entre las operaciones de guardado iniciadas por el usuario para reducir la cantidad de datos que se guardarán durante el apagado.
Las aplicaciones de consola reciben notificaciones de apagado en sus rutinas de controlador. Para registrar un controlador de consola, use la función SetConsoleCtrlHandler .
Las aplicaciones de servicio reciben notificaciones de apagado en sus rutinas de controlador. Para registrar un controlador de control de servicio, use la función RegisterServiceCtrlHandlerEx .
Bloqueo del apagado
Si una aplicación debe bloquear un posible apagado del sistema, puede llamar a la función ShutdownBlockReasonCreate . El autor de la llamada proporciona una cadena de motivo que se mostrará al usuario. La cadena de motivo debe ser corta y clara, proporcionando al usuario la información necesaria para decidir si desea continuar apagando el sistema.
Temas relacionados