07 Juli 2009

Menjalankan File dan Menunggu Sampai Ditutup

Menggunakan fungsi ShellExecuteEx mempunyai keuntungan dibanding dengan fungsi ShellExecute. Jika kita menjalankan aplikasi eksternal dari aplikasi kita dan ingin menunggu sampai aplikasi yang dijalankan ditutup baru bisa kembali ke aplikasi kita, bisa dengan menggunakan fungsi ShellExecuteEx. Kuncinya terletak pada parameter fMask. Jika flag SEE_MASK_NOCLOSEPROCESS aktif, maka saat file dijalankan parameter hProcess akan berisi handle pada file tersebut. Handle tersebut bisa digunakan untuk mengetahui apakah file yang dijalankan tersebut sudah ditutup. Supaya lebih jelas diberikan contoh program seperti dibawah ini.
var
  SEInfo: TShellExecuteInfo;
  ExitCode: DWORD;
begin
  FillChar(SEInfo, SizeOf(SEInfo), 0);
  with SEInfo do
  begin
    cbSize := SizeOf(TShellExecuteInfo);
    fMask := SEE_MASK_NOCLOSEPROCESS;
    lpVerb := PChar('open');
    lpFile := PChar('notepad.exe');
    nShow := SW_SHOWNORMAL;
  end;
  if ShellExecuteEx(@SEInfo) then
  begin
    repeat
      GetExitCodeProcess(SEInfo.hProcess, ExitCode);
    until ExitCode <> STILL_ACTIVE;
  end;
end.

Tidak ada komentar:

Posting Komentar