Ako vam ikada bude potrebno da pokrećete neku spoljnu aplikaciju iz vašeg projekta, a treba da sačekate njen završetak rada, nemojte koristiti proceduru ShellExecute. Zaobićićemo ovu proceduru korišćenjem funkcija: CreateProcess, WaitForSingleObject i CloseHandle. Pokrenite novi projekt i na formu postavite jedno komandno dugme, te događaju ButtonClick dodajte sledeći programski kod: procedure TForm1.Button1Click(Sender: TObject); var proc_info: TProcessInformation; startni_info: TStartupInfo; begin // inicijalizacija FillChar(proc_info, sizeof(TProcessInformation), 0); FillChar(startni_info, sizeof(TStartupInfo), 0); startni_info.cb := sizeof(TStartupInfo); // pokusaj kreiranja procesa if CreateProcess(’c:\windows otepad.exe’, nil, nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, startni_info, proc_info) <> False then begin // proces je uspesno kreiran i //ceka se njegovo okoncanje… WaitForSingleObject(proc_info.hProcess, INFINITE); // Proces je zavrsen. Možemo ga zatvoriti CloseHandle(proc_info.hProcess); Application.MessageBox(’Notepad zavrsio rad!’, ‘Info’, MB_ICONINFORMATION); end else begin // nemogućnost kreiranja procesa Application.MessageBox(’Nije moguce izvrsiti ‘ + ‘application’, ‘Error’, MB_ICONEXCLAMATION); end; end; Kada pokrenete aplikaciju i kliknete dugme, pokrenuće se Windows editor “Notepad” (proverite samo putanju). Kada zatvorite “Notepad”, dobićete poruku o završetku pozvanog procesa. Eventualni problemi mogu da se jave kod funkcije WaitForSingleObjecti to u kombinaciji sa nekim aplikacijama.