¿Cómo puedo esperar hasta que se haya completado un proceso externo?

Así que hice un formulario en Delphi que me permite ejecutar varios scripts de Sikuli con varias configuraciones. Lo que estoy trabajando ahora es hacer posible que alguien que usa el formulario, configure varios scripts de sikuli para que se ejecuten después de otro. Como en:

Paso 1: SikuliScript1 con ConfigFile1. Paso 2: SikuliScript2 con ConfigFile2. etc ... Este es mi código hasta ahora:

procedure TSikRunForm.btnRunClick(Sender: TObject);
begin
    DirCombo:= '/C '+DirSik+'\sikuli-script.cmd' +' -r ' + DirScript + ' --args '+DirConfig;
    if SikFound then begin
      ShellExecute(Handle, nil, 'cmd.exe', pChar(DirCombo), nil, SW_SHOWNORMAL);
      Application.minimize;
    end else begin
      ShowMessage('Select the correct folder for your Sikuli installation folder');
    end;
end;

Y esto funciona a la perfección, la secuencia de comandos sikuli se ejecuta perfectamente y, mientras se ejecuta, la línea cmd es visible con las diversas acciones que se muestran. Una vez que el script de sikuli está listo, la línea cmd se cierra por sí sola. Entonces el controlador de shell sabe cuándo cerrar el proceso en ejecución. Entonces mi pregunta es: ¿es posible decirle a Delphi: después de que el manejador haya cerrado el proceso, ejecute el siguiente proceso (Sikuli Script)? Ahora sé que puedo ir con el createProcess completo en Delphi, pero simplemente parece una exageración. Tiene que haber una manera de hacerlo más rápido y más fácil. Alguien tiene una pista?

Respuestas a la pregunta(4)

Su respuesta a la pregunta