mundodelphi

programacion en delphi

Detectar y prevenir el cierre de windows

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.

Tagged as: , ,

Leave a Response

Please note: comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.

Google Analytics Alternative