PDA

Ver la Versión Completa : Conocer cuando es eliminado el proceso


cmfab
22-03-2015, 18:54:39
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:

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
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,


...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...


...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"...


...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

Windows 7: Task Manager - Allow or Deny Access Permission (http://www.sevenforums.com/tutorials/50001-task-manager-allow-deny-access-permission.html)
Espero sea útil :)

Nelson.

Neftali [Germán.Estévez]
24-03-2015, 18:11:58
¿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) (https://technet.microsoft.com/es-es/sysinternals/bb896683.aspx) que va muy bien para los usar en BAT/CMD.

nlsgarcia
24-03-2015, 20:48:18
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 ;)