Este procedimiento ejecuta la aplicación que le indiques y no regresa el control a tu aplicación sino hasta que la otra termine:
Código Delphi
[-]
procedure ExecuteProcessAndWait(ProcessName: String);
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
FillChar(StartInfo, SizeOf(StartInfo), 0);
StartInfo.cb := SizeOf(StartInfo);
if CreateProcess(PChar(ProcessName), nil, nil, nil, false, 0, nil, nil, StartInfo, ProcInfo) then
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end;
// Saludos