Club Delphi  
    Paypal   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
  #12  
Antiguo 25-04-2006
Avatar de PoZi
PoZi PoZi is offline
Miembro
 
Registrado: abr 2006
Posts: 11
Poder: 0
PoZi Va por buen camino
Hola¡¡¡

He probado lo que me dices Lepe y lamentablemente no me funciona: He hecho todo lo que dice Roman, he probado a guardar los datos en la función WMEndSession, en la WMQueryEndSession, con Msg.Result:=1 sin él.... y nada.
Parece ser que al lanzar el programa con Createprocesswithlogon se crea un proceso aislado del resto como si estuviera en una sesión distinta y para windows es como si no existiera (lo tiene marginado); Por eso ni funciona el ExitwindowsEx ni el evento OnCloseQuery ya que no le manda los mensajes EndSession ni QueryEndSession.

También he probado lo siguiente: Al lanzador le he quitado WaitForSingleObject y ShutDownWindows y le he puesto, como explica en el foro Roman, lo siguiente:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  SetProcessShutDownParameters($100, 0);
end;
 
procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
  WinSesionFin := true;
  inherited;
end;

procedure TForm1.WMEndSession(var Msg: TWMEndSession);
begin
  WinSesionFin := Msg.EndSession;
  inherited;
end;


procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if WinSesionFin then
    begin
      GuardarDatosSalida; (*Guarda la hora y fecha en una tabla*)
      CanClose := true;
    end
  else
    begin
      ExitWindowsEx(EWX_FORCE,0);
      Application.Terminate;
   end;
end;

De esta forma al hacer un log off se guarda la hora y fecha de salida, puesto que no está ocupado con WaitForSingleObject, y cuando quiera cerrar la sesión de windows desde el programa principal solo tengo que cerrar el lanzador para que se ejecute el código del evento OnCloseQuery y esto lo he hecho con la función KillTask (ver código). Pero al cerrarlo no se ejecuta el evento OnCloseQuery, sólo cierra el proceso y ya está.
Saludos¡¡¡

Última edición por PoZi fecha: 26-04-2006 a las 14:23:51.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Dar privilegios del SYSDBA a otro usuario Eolo Firebird e Interbase 3 21-03-2004 05:48:15
Roles - Usuarios y privilegios Osorio Firebird e Interbase 2 13-02-2004 23:34:31
Privilegios en interbase acrophet Conexión con bases de datos 1 09-02-2004 15:07:35


La franja horaria es GMT +2. Ahora son las 00:50:33.


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
Copyright 1996-2007 Club Delphi