La Web del Programador: Comunidad de Programadores
 
    Pregunta:  30812 - EJECUCIóN DE APLICACIONES EXTERNAS
Autor:  Rubén Malonda
Hola amigos:

Me gustaría saber como controlar la sucesión de varias apliaciones externas con Delphi. Es decir, me gustaría poder detectar el estado de una aplicación que haya iniciado desde Delphi para que no comience la próxima hasta que haya finalizado la anterior.

Gracias. Rubén

  Respuesta:  Lucas Colombo
Te paso el codigo para ejecutar una aplicación externa y esperar a que esta termine. Espero que te sea util.

function Ejecutar(const AppName,Params: string): THandle;
var
ProcInfo: TProcessInformation;
Info : TStartupInfo;
begin
FillChar(Info,SizeOf(Info),0);
Info.cb := SizeOf(Info);
Info.dwFlags := STARTF_USESHOWWINDOWS;
Info.wShowWindows := SW_SHOWNORMAL;
if not CreateProcess(nil,PChar(AppName + ' ' + Params) ,nil,nil,False,0,nil,nil,Info,ProcInfo) then
raise Exception.Create('No se puede iniciar la aplicacion');
Result := ProcInfo.hProcess;
end;

procedure TwndMain.Esperar(H;THandle);
begin
while WaitForSingleObject(H,100) = WAIT_TIMEOUT do
begin
Application.ProcessMessages;
if Application.Terminated then Break;
end;
end;

Y para usarla:
Esperar(Ejecutar(Nombre_de_la_aplicacion,parametros));

Suerte !!!