Detectar y prevenir el cierre de windows
Posted by neuronic on 12/02/09 • Categorized as Trucos Delphi
Muchos programas de windows cuando damos la orden de apagar el sistema o bien reiniciarlo, si hemos hecho cambios sobre algún documento nos dice con un cuadro de dialogo si queremos guardar etc..
En esta entrada explicare como detectar el apagado del sistema operativo windows usando mensajes que nos envía el SO cuando el usuario decide apagar o bien reiniciar
Con WMQueryEndSession podemos detectar el cierre del sistema operativo
Para poder capturar mensajes de windows tenemos que ponerlo en la parte private de la unidad
procedure WMQueryEndSession(var Msg: TMessage); message WM_QUERYENDSESSION;
Ejemplo:
Procedure TForm1.WMQueryEndSession(var Msg : TMessage);
begin
if (MessageDlg('Quieres continuar con el apagado?',mtConfirmation,[mbYes,mbNo],0)) = mrNo then
Msg.Result := 0
else
Msg.Result := 1;
close;
end;
Consejos:
Dependiendo de la aplicación que diseñamos, a la hora de detectar el apagado de windows podríamos hacer varias operaciones, por ejemplo un editor de texto básico.
Si el usuario ha creado un documento nuevo y no lo ha guardado, podríamos guardarlo automáticamente con algún nombre predeterminado, que cuando volviera abrir nuestro programa le advirtiera de que ultima vez no se guardo el documento y si lo quiere respaldar.
Podríamos también mostrar un cuadro de dialogo con algún temporizador que al terminar si el usuario no hace ninguna operación se apagara el sistema.
