PDA

Ver la Versión Completa : Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7


Gaby123
02-01-2007, 17:20:08
Hola buenos días, me gustaria saber como cerrar una aplicación desde mi aplicacion en Delphi 7, yo la ejecuto con shellexec y le paso como operacion 'open', pero no se como cerrarla luego.
Muchas gracias

Bicho
02-01-2007, 17:51:06
Hola, puedes pasarte por la sección de trucos (http://www.clubdelphi.com/trucos/) y encontrarás éste (http://www.clubdelphi.com/trucos/index.php?id=278)prueba a ver que tal.

Saludos

Gaby123
02-01-2007, 18:06:09
Excelente muchas gracias!!
Que bueno contar con ustedes

Gaby123
02-01-2007, 21:00:46
hola ese truco esta buenisimo, pero si la ventana no esta abierta en ese momento me cierra mi aplicacion
En la ayuda de Delphi dice que la funcion retorna NULL si falla, me imagino q si no encuentra la ventana, pero en la vida real no retorna NULL, por lo q no puedo validar q cierre la aplicacion correcta y no la mia. Espero haberme explicado...
Gracias

Bicho
02-01-2007, 21:26:03
Hola nuevamente, pues siguiendo con los trucos, éste (http://www.clubdelphi.com/trucos/index.php?id=128) te ofrece una lista de los ejecutables que están en marcha, tu buscas en esa lista si está el que has abierto y entonces cierras como ya sabes...

Saludos

delphi.com.ar
04-01-2007, 22:44:51
yo la ejecuto con shellexec y le paso como operacion 'open', pero no se como cerrarla luego.
Tratándose de un proceso que tu mismo creas, yo te recomendaría en lugar de usar ShellExecute, utilizar un CrateProcess y mantener el handle del proceso hasta que decidas terminarlo.


var
lStartupInfo: TStartUpInfo;
lProcessInfo: TProcessInformation;
begin
ZeroMemory(@lStartupInfo, SizeOf(STARTUPINFO));
with lStartupInfo do
begin
cb := SizeOf(lStartupInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := SW_SHOW;
end;

if CreateProcess(nil, 'calc.exe', nil, nil, TRUE,
NORMAL_PRIORITY_CLASS, nil, nil, lStartupInfo, lProcessInfo) then
if WaitForSingleObject(lProcessInfo.hProcess, 5000) = WAIT_TIMEOUT then
TerminateProcess(lProcessInfo.hProcess, 0);