Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cerrar aplicacion (https://www.clubdelphi.com/foros/showthread.php?t=95316)

Ricardo2010 04-08-2021 00:10:40

Cerrar aplicacion
 
Hola, tengo un problema con una aplicacion , esta esta con delphi 10.4, les explico, tengo dos aplicaciones que se ejecutan en windows la 1 llama a la 2 , esta (2) ejecuta una serie de comando y termina mientras la 1 sigue ejecutando sin problemas. Ambas se ejecutan sin problemas, pero la aplicacion 2 a pesar de realizar el cierre internamente si reviso el administrador de tareas esta esta ahi si la aplicacion 1 ejecuta la 2 genera lo que tiene que hacer y si veo el administrador de tarea tengo una aplicacion 2 nuevamente , es decir si la 1 llama 10 veces a la 2 me quedaran 10 veces la 2 no hay problema con lo que se debe hacer el problema es que he probado varias formas de cerrar la aplicacion pero esta permanece
Que he probado
-poner boton cerrar y mando clic sobre el donde tiene el close
-PostMessage con WM_Close
-Application.Terminate

y ninguna me cierra la aplicacion esta si la reviso en administrador de tarea continua ahi , claro sin hacer nada, como puedo hacer que al finalizar lo que tiene que hacer se cierre completamente

gracias

Casimiro Notevi 04-08-2021 10:50:22

¿Cómo ejecutas la 2 desde la 1?

Neftali [Germán.Estévez] 04-08-2021 12:19:18

Lo más sencillo en estos casos es generar un pequeño ejemplo con 2 aplicaciones (vacías) y donde se reproduzca el problema y adjuntarlo al mensaje.
Así podemos ver cómo se llaman entre ellas y si hay algún problema al cerrarlas.
De otra forma intentar adivinar qué pasa es "dar palos de ciego".

Ricardo2010 05-08-2021 17:11:41

La aplicacion es llamada desde .net con
Código:

miFile = "C:\aplicaciones\inventario.exe """ & mensaje  & """" &  email & MAIL_ENC&" " & """" & nombres & """"&" " & """" &archivo& """"&copia       
Set objWSCript = CreateObject("WSCript.Shell")
objWSCript.Run miFile

esta aplicacion delphi no visual al momento de ser ejecuta realiza una serie de cálculos y manda mail a diferentes usuarios, este proceso es muy rápido y cuando termina no tienen nada que realizar pero queda en el administrador de tarea y yo en forma manual tengo que ingresar al administrador y terminar el proceso

Como indico realice diferentes pruebas cuando termina coloque un close, un terminate pero igual queda en el administrador de tarea, la aplicacion se puede ser llamada varias veces y se ejecuta sin problemas todas las veces lo que pasa es que alguien no va al administrador de tareas a terminar el proceso puede estar 10 o 20 veces y ese es el punto que se quiere evitar que cuando termine "desaparezcan"

Neftali [Germán.Estévez] 06-08-2021 09:18:32

Cita:

Empezado por Ricardo2010 (Mensaje 542232)
...al momento de ser ejecuta realiza una serie de cálculos y manda mail a diferentes usuarios, este proceso es muy rápido y cuando termina no tienen nada que realizar pero queda en el administrador de tarea y yo en forma manual tengo que ingresar al administrador y terminar el proceso


Si la aplicación no se cierra correctamente es por algo.

Cosas que se me ocurren que puedes hacer:
  • Puedes "probar" a comentar diferentes partes del código y ejecutarlo a ver cual de ellas es la que provoca el "cuelgue"·
  • Tal vez estés utilizando alguna librería que no se cierra bien. Puedes hacer Debug de la aplicación para ver qué está pasando (Menú Run / parameters)
  • Desde el Administrador de Tareas, puedes generar un DUMP de memoria antes de "matar" el proceso y analizarlo. No es algo fácil, pero puedes buscar información de cómo realizarlo. En este hilo habla del tema y te puede servir para empezar a buscar información.
  • Puedes probar a cerrar la aplicación con Halt(-1). Aunque esto no corrige el error.


La franja horaria es GMT +2. Ahora son las 01:06:25.

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