Cita:
Empezado por Gelmin
en el evento de la form OnCloseQuery asignar a la variable CanClose:=false ya probe y funciona pero no me sirve porque mi aplicacion necesito que se cierre cuando se cierre la sesion de Win, y con ese codigo no me deja ni cerrar la sesion de windows porque claro hay un programa que le esta diciendo a Win que no se puede cerrar
|
Esta cuestión se relaciona con lo que anteriormente te expliqué en el mensaje
Guardar antes de que mi aplicacion se cierre y lo diré de nuevo:
Por lo que a mi juicio es un error de diseño, Delphi no distingue si una ventana se cierra por métodos cómo Alt-F4, botón de cruz, método Close, etc. o porque se termina la sesión de
Windows. Todo porque al recibir el mensaje WM_QUERYENDSESSION se limita a llamar al evento CloseQuery sin pasarle a éste algún parámetro que indique la forma en que se intenta cerrar la sesión.
La solución es redefinir el manejador del mensaje WM_QUERYENDSESSION y ahí fijar alguna bandera que indique por qué se está cerrando la sesión:
Código:
EndSession := true;
de manera que en el evento OnCloseQuery puedas actuar según el valor de dicha bandera:
Código:
CanClose := EndSession
// Saludos