PDA

Ver la Versión Completa : Capturar el cierre de un proceso


SyncReuter
26-03-2008, 18:57:50
Hola a todos, mi consulta es la siguiente (espero estar en el hilo correcto), les cuento, tengo una aplicación hecha en delphi 2005 cuya tarea es conectarse a una red inalámbrica X, ahora bien...cuando dicha aplicación es cerrada el programa internamente cierra la conexion establecida con el SSID (realizando un cierre formal en el evento FormClose), todo hasta ahi va sin problemas, el problema surge cuando el usuario cierra la aplicacion desde el administrador de programas el evento FormClose de la FORM principal no se ejecuta por lo tanto la conexion inalambrica queda totalmente activa y eso es lo que tengo que evitar...la conexion se debe establecer unicamamente con el programa creado para ello. Entonces, necesito saber si existe algun modo de poder capturar (via mensaje de windows) cuando el usuario cierra el programa desde el administrador de tareas de windows (¿Generara algun tipo de mensaje para notificar el cierre anormal?).

Reciban mis cordiales saludos desde Chile..Gracias!!!

alquimista
27-03-2008, 00:35:27
No se mucho del tema pero como nadie se anima...

Intenta con el evento OnDestroy cuando se destruye el form...

A ver si hay suerte

SyncReuter
27-03-2008, 02:53:08
Gracias por responder, realice la prueba realizando la llamada al procedimiento de cerrado de la conexion dentro del evento FormDestroy pero no elimina el perfil (conexion inalambrica). La unica forma es cerrando el form en forma normal. Quizas no exista una notificacion por medio de algun mensaje de windows, quizas tenga que pensar en otro modo de hacerlo (creando algun programa residente que se encarge de verificar si el programa principal esta corriendo o no en la computadora). ¿Alguna idea?

saludos

alquimista
27-03-2008, 18:45:44
por probar de nuevo hay un Message WM_ENDSESSION o wm_queryendsession pero es cuando se cierra windows

uses
Windows, Messages,.......

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


var
Form1: TForm1;

implementation

procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
// terminar la conexion
Msg.result := 1; // para que finalice app
end;


begin

end.




espero que sirva