Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Conocer cuando es eliminado el proceso (https://www.clubdelphi.com/foros/showthread.php?t=87944)

cmfab 22-03-2015 18:54:39

Conocer cuando es eliminado el proceso
 
Hola a todos, existe algún evento o algo al estilo que se pueda consultar en el momento en el que el proceso que ejecuta la aplicación es eliminado del administrador de tareas. He probado el evento Destroy del Form principal pero no me funciona y lo que necesito es ejecutar cierta instrucción cuando el proceso es eliminado (específicamente como proceso del administrador de tareas de Windows.

Gracias por sus atenciones

giulichajari 22-03-2015 19:59:15

La verdad nunca intente algo asi. Pero el proceso si es uno por la aplicacion deberia ser:

Código Delphi [-]
Application.Terminate;
pero prueba con el Onclose, porque fijate que si abres tu aplicacion y abres otros form(otras ventana), las minimizas y le das cerrar al form principal se cierra todo.
No se cual es tu necesidad, para que quieres hacer eso.

Saludos

cmfab 22-03-2015 20:38:09

Gracias por la respuesta, pero no funciona tampoco. la necesidad es vital, ya que necesito que cuando la aplicación se cierre cerrar otros procesos internos que estoy usando, como es lógico si se cierra por la vía normal, no hay problemas, el tema está cuando matan el proceso, por eso requiero ver si es posible detectar un cierre de este tipo. Gracias una vez mas

giulichajari 22-03-2015 21:33:20

Cita:

Empezado por cmfab (Mensaje 490305)
Gracias por la respuesta, pero no funciona tampoco. la necesidad es vital, ya que necesito que cuando la aplicación se cierre cerrar otros procesos internos que estoy usando, como es lógico si se cierra por la vía normal, no hay problemas, el tema está cuando matan el proceso, por eso requiero ver si es posible detectar un cierre de este tipo. Gracias una vez mas

Para cerrar otros procesos de otras aplicaciones? supongo que es complejo y debes operar el registro de windows, es decir el SO, pero nunca lo hice.

Neftali [Germán.Estévez] 23-03-2015 10:42:12

Lo normal en estos casos (normal o habitual) es tener otro proceso que te hace de vigía.
Algo similar a lo que hace el Interbase Guardian o muchos programas antivirus. Este segundo proceso (que puede ser un servicio) es el que "vigila" al principal.

Y según lo que pasa con el "principal" hace unas acciones u otras.

PROBLEMA: Si matas al vigilante... (STOP del servicio) no hay nadie que vigile. :o

Creo que desde el propio proceso no siempre vas a poder detectar el cierre, sobre todo si se realiza de forma "forzosa".

cmfab 23-03-2015 11:36:25

Gracias por las respuestas, no me sirve un segundo proceso, ya que la instrucción que tengo que ejecutar es obligatorio que se realice en el proceso 1, así que por lo que veo no tengo solución a este problema. Gracias nuevamente por sus dedicaciones y tiempo

nlsgarcia 24-03-2015 17:49:19

cmfab,

Cita:

Empezado por cmfab
...existe algún evento o algo al estilo que se pueda consultar en el momento en el que el proceso que ejecuta la aplicación es eliminado del administrador de tareas...necesito que cuando la aplicación se cierre cerrar otros procesos internos que estoy usando...

Cita:

Empezado por Neftali
...Lo normal en estos casos (normal o habitual) es tener otro proceso que te hace de vigía...Creo que desde el propio proceso no siempre vas a poder detectar el cierre, sobre todo si se realiza de forma "forzosa"...

Cita:

Empezado por cmfab
...no me sirve un segundo proceso...

:rolleyes:

Pregunto : ¿Has considerado la posibilidad de bloquear el Task Manager a un usuario o grupo en específico para evitar que cierre la aplicación en cuestión? :confused:

Revisa esta información
Espero sea útil :)

Nelson.

Neftali [Germán.Estévez] 24-03-2015 18:11:58

Cita:

Empezado por nlsgarcia (Mensaje 490379)
¿Has considerado la posibilidad de bloquear el Task Manager a un usuario o grupo en específico para evitar que cierre la aplicación en cuestión?

El problema es que el Task Manager no es la única forma de matar el proceso.
Hay muchas otras similares (incluso mejores) e igual de efectivas.

Neftali [Germán.Estévez] 24-03-2015 18:14:54

Yo mismo uso a menudo PSKill (de SysInternals/Microsoft) que va muy bien para los usar en BAT/CMD.

nlsgarcia 24-03-2015 20:48:18

Neftali,

Cita:

Empezado por Neftali
...El problema es que el Task Manager no es la única forma de matar el proceso...Hay muchas otras similares (incluso mejores) e igual de efectivas...Yo mismo uso a menudo PSKill (de SysInternals/Microsoft) que va muy bien para los usar en BAT/CMD...

Es correcto ^\||/

Quizás se pueda acotar el problema planteado a un entorno específico en el cual el usuario o grupo de usuarios, no tengan los privilegios requeridos que interfieran con el workaround sugerido.

Los antivirus de Norton tiene la facultad de evitar que sean eliminados de memoria tanto con Task Manager (Windows) como con Process Explorer y PSKill (SysInternals), habrá que ver como Symantec evita ser eliminado de memoria por medios convencionales.

Saludos,

Nelson.

mamcx 25-03-2015 15:39:48

El asunto es muy simple: Si el proceso se muere, todo muere con el.

Tener un guardian es una solucion *parcial* (aunque es buena idea!), pero no es la definitiva, porque el proceso puede morir por ejemplo, por una caida total del sistema.

P.D: Ahora, me parece MUY raro el caso de uso que planteas: Que es lo que *realmente* quieres hacer? Siempre que cuando alguien se pone a hacer cosas raras es porque tiene un problema, y en vez de resolver el problema... hace cosas raras ;)


La franja horaria es GMT +2. Ahora son las 08:50:31.

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