Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Como capturar algo antes de que cierre windows ? (https://www.clubdelphi.com/foros/showthread.php?t=61461)

gaston260 08-11-2008 17:32:20

Como capturar algo antes de que cierre windows ?
 
buenas tardes estoy necesitando saber con que mensaje puedo capturar algo antes de que cierre windows o antes de canviar de usuario o de cerrar sesion o todos juntos jejeje probe un codigo de trucomania pero no resulto

desde ya muchas gracias !

luisgutierrezb 08-11-2008 18:27:43

pero que quieres capturar?? a primera vista se me viene a la mente el mensaje de windows wm_queryensession o algo asi, viene en la ayuda del win32

gaston260 08-11-2008 23:38:54

quiero que antes de cerrar sesion o de cerrar window aparezca un mensaje como "chau" o algo el no es importante lo que quiero hacer si no que no se porque no funciona el queryensession

yo prove esto

Cuando el usuario sale de Windows teniendo nuestra apliacación abierta, es posible que la pille en un mal momento (sin grabar datos, en medio de
un proceso, etc). Esto se puede evitar capturando el mensaje que envia Windows a todas las apliacaciones cuando el usuario quiere cerrar
Windows: el mensaje WM_QUERYENSESSION

Para capturar el mensaje y enviarlo a nuestro código de tratamiento del mensaje:



TForm1 = class(TForm)
..........
private
procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION;
..........
end;



Es decir, basta con que añadamos en la claúsula Private de la declaración del form la siguiente linea:



procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION;



y luego, en la parte implementation, ponemos el código que trate el mensaje:



procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
MessageBox(Handle, 'Cierra antes el programa', nil, MB_OK);
Msg.result := 0;
end;



Si en lugar de abortar el cierre de Windows, queremos que siga realizandose, basta con que cambiemos el Msg.result:=0 por Msg.result:=1.


NOTA: El comportamiento del mensaje difiere en win98 y WinNT, así que mirate la ayuda del mensaje WM_QUERYENDSESSION.

sacado de Trucomania pero no funciono y ahora que lo veo me parece que el procedimiento procedure WMQueryEndSession esta mal escrito .

gracias por la ayuda ahora voy a probar el procedure WM_QueryEndSession

Lepe 08-11-2008 23:41:17

Busca también en el foro, se ha tratado varias veces.

Saludos


La franja horaria es GMT +2. Ahora son las 06:58:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi