Hola, ante todo, gracias por contestar. Tengo un messenger corporativo de la empresa, que se arranca cuando se inicia la sesion. Entonces, intento conseguir que cuando alguien cierre la sesion o apaga el ordenador, se guardan unos valores en unas tablas.
Por lo que intento capturar ese cierre de sesion o apagado, hago mis cosas y sigue cerrandose o apagandose
Código Delphi
[-]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
procedure WMQueryEndSession (var Msg: TWMQueryEndSession);
message WM_QueryEndSession; end;
var
Form1: TForm1;
EndSessionFlags: integer; ProcessStatus: integer;
implementation
{$R *.dfm}
procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
Timer1.Enabled := true;
case ProcessStatus of
0: begin
ProcessStatus := 1; EndSessionFlags := Msg.Unused; Msg.Result := 0; end;
1: Msg.Result := 0; 2: begin
ProcessStatus := 0; Msg.Result := 1; end;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ProcessStatus := 2; ExitWindowsEx(EndSessionFlags, 0); end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ProcessStatus := 0;
end;
end.
Para eso intento utilizar el endsessionflags que ha capturado el mensaje que han mandado de cerrar o apagar. Pero el problema es q siempre me cierra la sesion .... nunca me apaga ... aun cambiando por "Msg.Unused".
Un saludo