Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-12-2006
mierda mierda is offline
Miembro
 
Registrado: may 2006
Posts: 129
Poder: 19
mierda Va por buen camino
Problema con el WMQueryEndSession

Hola, teniendo el siguiente ejemplo ...

Código Delphi [-]
 
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
    procedure WMQueryEndSession (var Msg: TWMQueryEndSession);
    message WM_QueryEndSession;   // esta funcion intercepta el mensaje que le lanza el windows a cerrar a la ventana de delphi
  end;
var
  Form1: TForm1;
  EndSessionFlags: integer; // esti es para q no se cierre hasta que no me de la gana
  ProcessStatus: integer;  // idem de arriba

implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
showmessage (inttostr(msg.source) + ' ' + Msg.Result);
case ProcessStatus of
    0: // Primera vez
      begin
        ProcessStatus := 1;        // Evita entrar aquí de nuevo
        EndSessionFlags := Msg.Source;  // Guarda la forma de cierre
        Msg.Result := 0;           // Decimos a Windows que no termine
                      // realizar el proceso dentro de unos milisegundos
      end;
    1: // Estamos procesando
        Msg.Result := 0;      // Decimos a Windows que no estamos listos
    2: // Hemos terminado de realizar el proceso
      begin
        ProcessStatus := 0;   // Listo para la próxima (si corresponde)
        Msg.Result := 1;      // Estamos listos. Se puede cerrar Windows
      end;
    end;
end;
end.

da igual que yo le mande cerrar la sesion, apagar o reiniciar ... el showmessage me muestra que el valor siempre es 0, con lo que siempre me cierra la sesion.

Alguna idea de por que pasa esto? Un saludo.

PD: falta un trocito de codigo que pone el 2: //Que hemos terminado de realizar el proceso, pero eso no es importante ... trabajo con delphi7 y win2000, pero en xp tambien me pasa.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:58:08.


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