06 Juli 2009

Fungsi Windows API: ShellExecuteEx

Fungsi ShellExecuteEx mempunyai kegunaan yang mirip dengan fungsi ShellExecute yang disediakan Windows. Untuk menggunakan fungsi ini, tambahkan unit ShellAPI pada form yang bersangkutan. Fungsi ShellExecuteEx hanya mempunyai satu parameter yang berupa pointer ke suatu record dan mengembalikan nilai dengan tipe boolean, True jika sukses atau False jika gagal. Sintaknya bisa kita lihat dibawah ini.
function ShellExecuteEx(lpExecInfo: PShellExecuteInfo): BOOL;

Parameter pada fungsi diatas di deklarasikan sebagai berikut.
type
  PShellExecuteInfo = ^TShellExecuteInfo;
  TShellExecuteInfo = record
    cbSize: DWORD;
    fMask: ULONG;
    Wnd: HWND;
    lpVerb: PWideChar;
    lpFile: PWideChar;
    lpParameters: PWideChar;
    lpDirectory: PWideChar;
    nShow: Integer;
    hInstApp: HINST;
    lpIDList: Pointer;
    lpClass: PWideChar;
    hkeyClass: HKEY;
    dwHotKey: DWORD;
    hIcon: THandle;
    hProcess: THandle;
  end;

Deskripsi dari parameter diatas adalah sebagai berikut.

  1. cbSize. Merupakan ukuran struktur dalam byte.
  2. fMask. Flag yang menunjukkan isi dan validitas dari anggota struktur yang lain. Bisa merupakan kombinasi dari konstanta berikut.
    • SEE_MASK_CLASSNAME
    • SEE_MASK_CLASSKEY
    • SEE_MASK_IDLIST
    • SEE_MASK_INVOKEIDLIST
    • SEE_MASK_ICON
    • SEE_MASK_HMONITOR.
    • SEE_MASK_HOTKEY
    • SEE_MASK_NOCLOSEPROCESS
    • SEE_MASK_CONNECTNETDRV
    • SEE_MASK_NOASYNC
    • SEE_MASK_FLAG_DDEWAIT
    • SEE_MASK_DOENVSUBST
    • SEE_MASK_FLAG_NO_UI
    • SEE_MASK_UNICODE
    • SEE_MASK_NO_CONSOLE
    • SEE_MASK_ASYNCOK
    • SEE_MASK_NOQUERYCLASSSTORE
    • SEE_MASK_HMONITOR
    • SEE_MASK_NOZONECHECKS
    • SEE_MASK_WAITFORINPUTIDLE
    • SEE_MASK_FLAG_LOG_USAGE
  3. Wnd. Sama dengan parameter hWnd para fungsi ShellExecute.
  4. lpVerb. Sama dengan parameter Operation para fungsi ShellExecute.
  5. lpFile. Sama dengan parameter FileName para fungsi ShellExecute.
  6. lpParameters. Sama dengan parameter Parameters para fungsi ShellExecute.
  7. lpDirectory. Sama dengan parameter Directory para fungsi ShellExecute.
  8. nShow. Sama dengan parameter ShowCmd para fungsi ShellExecute.
  9. hInstApp. Jika flag SEE_MASK_NOCLOSEPROCESS aktif dan fungsi sukses dijalankan, akan berisi nilai lebih dari 32. Jika gagal akan mengembalikan kode kesalahan.
  10. lpIDList. Optional. Alamat absolut dari struktur ITEMIDLIST yang berisi daftar identifier yang unik bagi file yang di eksekusi. Parameter ini diabaikan jika flag SEE_MASK_IDLIST atau SEE_MASK_INVOKEIDLIST pada parameter fMask tidak aktif.
  11. lpClass. Optional. Nama class dari file atau GUID. Parameter ini diabaikan jika flag SEE_MASK_CLASSNAME pada parameter fMask tidak aktif.
  12. hkeyClass. Optional. Registry key untuk class file. Parameter ini diabaikan jika flag SEE_MASK_CLASSKEY pada parameter fMask tidak aktif.
  13. dwHotKey. Optional. Shortcut pada keyboard yang di asosiasikan dengan aplikasi yang bersangkutan. Parameter ini diabaikan jika flag SEE_MASK_HOTKEY pada parameter fMask tidak aktif.
  14. hIcon. Optional. Handle ke suatu icon untuk class file. Hanya digunakan untuk Windows XP dan sebelumnya, diabaikan untuk Windows Vista dan sesudahnya. Parameter ini diabaikan jika flag SEE_MASK_ICON pada parameter fMask tidak aktif.
  15. hProcess. Berisi nilai kembali berupa handle untuk aplikasi yang dijalankan, jika flag SEE_MASK_NOCLOSEPROCESS pada parameter fMask aktif.

Contoh penggunaannya adalah sebagai berikut.
var
  SEInfo: TShellExecuteInfo;
begin
  FillChar(SEInfo, SizeOf(SEInfo), 0);
  with SEInfo do
  begin
    cbSize := SizeOf(TShellExecuteInfo);
    lpVerb := PChar('open');
    lpFile := PChar('C:\Windows');
    nShow := SW_SHOWNORMAL;
  end;
  ShellExecuteEx(@SEInfo);
end.

1 komentar: