Pokretanje procesa i njegovo okončavanje, Delphi
17.06.2010, 15:22
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\notepad.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.
Postavio clan: Uputstvo_84
Komentari
Trenutno nema komentara, komentarisite clanak pomocu forme koja se nalazi ispod
Obavestenje: Komentari nisu zvanicni stavovi ovog sajta već subjektivna mišljenja. Sajt Uputstva.rs nije odgovoran za stavove koji su iznešeni u komentarima i oni su vlasništvo njihovih autora.