Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2007
Aldo Aldo is offline
Miembro
 
Registrado: ene 2004
Posts: 46
Poder: 0
Aldo Va por buen camino
¿Qué se ejecuta en una plicación cuando ésta es terminada desde el Admin. de Tareas?

Hola a Todos:

Ante todo, gracias por la atención brindada en la solución de esta pregunta.
Estoy trabajando en Delphi 5 y la cuestión es la siguiente:

¿Qué código se ejecuta en una aplicación Delphi cuando ésta es terminada desde el Administrador de Tareas de Windows? o en su defecto ¿Hay algo que me pueda brindar la oportunidad de capturar algún mensaje en la aplicación, que Windows le pasa cuando se invoca su terminación desde el Administrador de Tareas de Windows y si es así cuál es ese Mensaje WM_???? o SC_???? ?

El tema es que estoy trabajando con servidores DCOM y sus respectivos clientes y quiero tener sincronizados correctamente los clientes y el servidor. Por ejemplo si por algún motivo XXXX es necesario terminar la ejecución del Servidor DCOM desde el Administrador de Tareas de Windows, me gustaría poder capturar ese "Evento" y poder enviar un mensaje a todos los clientes conectados para desconectarlos y que a su vez se descarguen en sus ejecuciones.

Otro punto de vista es que se puede terminar de la misma manera el Cliente (Terminar Tarea en el Administrador de Tareas de Windows ) y como no termina por su cause normal, en el servidor DCOM quedará referencias a ese cliente, etc.

Muchas gracias por el tiempo prestado a leer este tema y a tratar de ayudarme en su solución.

Aldo
Responder Con Cita
  #2  
Antiguo 07-02-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
No estoy seguro de qué mensaje envía el Administrador de tareas, pero seguro que es el mismo que envía Windows cuando cierrar sesión o apagas el ordenador: WM_ENDSESSION. Podrías hacer una comprobación.

Podría explicartelo mejor, pero no lo recuerdo muy bien y además es un tema ya tratado en los foros (te recomiendo que hagas una búsqueda).


Saludos
Responder Con Cita
  #3  
Antiguo 08-02-2007
Aldo Aldo is offline
Miembro
 
Registrado: ene 2004
Posts: 46
Poder: 0
Aldo Va por buen camino
Gracias Lunático por tu respuesta, pero me parece que no recibe ese mensaje de Windows. En una prueba que he hecho, he sobreescrito el procedimiento WndProc del formulario principal del cliente y he puesto un ShowMessage y por lo visto cuando se refiere al caso en concreto del que hablamos no pasa por ese procedimiento.

No obstante haré más pruebas porque también tengo sobreescrito el procedure que captura el mensaje de windows WM_QUERYENDSESSION para en este caso si se termina la aplicación porque el usuario lo está cerrando, sea consecuente con lo que quiero hacer ( el motivo de mi consulta, osea notificar según sea el caso al cliente o al servidor para que se mantenga coherente toda la información en el sistema ) y podré hacer lo mismo con el mensaje WM_ENDSESSION a ver si se comporta de la misma manera.

Gracias por tu tiempo.
Responder Con Cita
  #4  
Antiguo 08-02-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cuando se interrumpe la ejecución de un proceso desde el administración de tareas, este termina de forma brusca, no hay avisos.
Cerrar un proceso es una tarea que solo debe realizarse cuando un programa ha dejado de responder, o cuando queremos matar un proceso malicioso. En ambos casos no tiene sentido avisar de forma alguna, en el primero de los casos porque el programa no podría procesar ese aviso y en el segundo no nos interesa que el proceso pueda defenderse
La única solución es utilizar otra aplicación que se encargue de vigilar a la primera, por ejemplo, examinando la lista de procesos y detectando cuando esta ya no esta en la lista. O una solución un poco mas avanzada, seria que ambas aplicación es se comunicaran a intervalos regulares, de esta forma la segunda aplicación no solo detectaría cuando la primera aplicación es cerrada de forma abrupta sino que también cuando esta se ha quedado colgada.
Responder Con Cita
  #5  
Antiguo 08-02-2007
Aldo Aldo is offline
Miembro
 
Registrado: ene 2004
Posts: 46
Poder: 0
Aldo Va por buen camino
Gracias por tu tiempo. Lo que me comentas tiene sentido. Así que haré caso de la sugerencia que me haces para poder solucionar el problema que se me plantea. Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Como evito error cuando no esta una Dll?? marceloalegre Varios 4 01-03-2008 18:09:48
Se puede saber cuando se esta por apagar windows? Martin API de Windows 4 27-12-2006 14:57:28
Saber cuando se ejecuta EXPLORER.EXE marceloalegre Varios 5 06-06-2005 16:58:07
Cuando tu novia está buena. guillotmarc Humor 5 12-07-2004 09:07:00
access violation cuando la impresora no esta lista fabianbbg Impresión 1 06-09-2003 22:29:08


La franja horaria es GMT +2. Ahora son las 01:00:14.


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