Tehnika Krstarice > Programiranje > Delphi - Pokretanje procesa i njegovo okončavanje

Delphi - Pokretanje procesa i njegovo okončavanje

01.02.2001.

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. Mozemo ga zatvoriti.
             CloseHandle(proc_info.hProcess);
             Application.MessageBox('Notepad zavrsio rad!',
                      'Info', MB_ICONINFORMATION);
         end
         else
         begin
             // Nemogucnost kreiranja procesa
             Application.MessageBox('Nije moguce izvrsiti '
                + 'application', 'Error', MB_ICONEXCLAMATION);
         end;
  end;

Kada pokrenete aplikaciju i kliknete na 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 "WaitForSingleObject" i to u kombinaciji sa nekim aplikacijama.

Preporučite ovaj članak

Članak još uvek nije ocenjen.