Fungsi ShellExecuteA (shellapi.h)
Melakukan operasi pada file tertentu.
Sintaks
HINSTANCE ShellExecuteA(
[in, optional] HWND hwnd,
[in, optional] LPCSTR lpOperation,
[in] LPCSTR lpFile,
[in, optional] LPCSTR lpParameters,
[in, optional] LPCSTR lpDirectory,
[in] INT nShowCmd
);
Parameter
[in, optional] hwnd
Jenis: HWND
Handel ke jendela induk yang digunakan untuk menampilkan UI atau pesan kesalahan. Nilai ini bisa NULL jika operasi tidak terkait dengan jendela.
[in, optional] lpOperation
Jenis: LPCTSTR
Penunjuk ke string yang dihentikan null, yang disebut dalam hal ini sebagai kata kerja, yang menentukan tindakan yang akan dilakukan. Kumpulan kata kerja yang tersedia tergantung pada file atau folder tertentu. Umumnya, tindakan yang tersedia dari menu pintasan objek tersedia kata kerja. Kata kerja berikut umumnya digunakan:
edit
Meluncurkan editor dan membuka dokumen untuk pengeditan. Jika lpFile bukan file dokumen, fungsi akan gagal.
Menjelajahi
Menjelajahi folder yang ditentukan oleh lpFile.
cari
Memulai pencarian yang dimulai di direktori yang ditentukan oleh lpDirectory.
buka
Membuka item yang ditentukan oleh parameter lpFile . Item dapat berupa file atau folder.
Cetak
Mencetak file yang ditentukan oleh lpFile. Jika lpFile bukan file dokumen, fungsi gagal.
Jalankan Sebagai
Meluncurkan aplikasi sebagai Administrator. Kontrol Akun Pengguna (UAC) akan meminta persetujuan kepada pengguna untuk menjalankan aplikasi yang ditinggikan atau memasukkan kredensial akun administrator yang digunakan untuk menjalankan aplikasi.
NULL
Kata kerja default digunakan, jika tersedia. Jika tidak, kata kerja "buka" digunakan. Jika tidak ada kata kerja yang tersedia, sistem menggunakan kata kerja pertama yang tercantum dalam registri.
[in] lpFile
Jenis: LPCTSTR
Penunjuk ke string yang dihentikan null yang menentukan file atau objek untuk menjalankan kata kerja yang ditentukan. Untuk menentukan objek namespace Shell, berikan nama parse yang sepenuhnya memenuhi syarat. Perhatikan bahwa tidak semua kata kerja didukung pada semua objek. Misalnya, tidak semua jenis dokumen mendukung kata kerja "cetak". Jika jalur relatif digunakan untuk parameter lpDirectory tidak menggunakan jalur relatif untuk lpFile.
[in, optional] lpParameters
Jenis: LPCTSTR
Jika lpFile menentukan file yang dapat dieksekusi, parameter ini adalah penunjuk ke string yang dihentikan null yang menentukan parameter yang akan diteruskan ke aplikasi. Format string ini ditentukan oleh kata kerja yang akan dipanggil. Jika lpFile menentukan file dokumen, lpParameters harus NULL.
[in, optional] lpDirectory
Jenis: LPCTSTR
Penunjuk ke string yang dihentikan null yang menentukan direktori default (berfungsi) untuk tindakan tersebut. Jika nilai ini NULL, direktori kerja saat ini digunakan. Jika jalur relatif disediakan di lpFile, jangan gunakan jalur relatif untuk lpDirectory.
[in] nShowCmd
Jenis: INT
Bendera yang menentukan bagaimana aplikasi akan ditampilkan saat dibuka. Jika lpFile menentukan file dokumen, bendera hanya diteruskan ke aplikasi terkait. Terserah aplikasi untuk memutuskan cara menanganinya. Ini bisa menjadi salah satu nilai yang dapat ditentukan dalam parameter nCmdShow untuk fungsi ShowWindow .
Mengembalikan nilai
Jenis: HINSTANCE
Jika fungsi berhasil, fungsi mengembalikan nilai yang lebih besar dari 32. Jika fungsi gagal, fungsi mengembalikan nilai kesalahan yang menunjukkan penyebab kegagalan. Nilai yang dikembalikan ditransmisikan sebagai HINSTANCE untuk kompatibilitas mundur dengan aplikasi Windows 16-bit. Namun, ini bukan HINSTANCE sejati. Ini hanya dapat ditransmisikan ke INT_PTR dan dibandingkan dengan 32 atau kode kesalahan berikut di bawah ini.
Menampilkan kode | Deskripsi |
---|---|
|
Sistem operasi kehabisan memori atau sumber daya. |
|
File yang ditentukan tidak ditemukan. |
|
Jalur yang ditentukan tidak ditemukan. |
|
File .exe tidak valid (.exe non-Win32 atau kesalahan dalam gambar .exe). |
|
Sistem operasi menolak akses ke file yang ditentukan. |
|
Asosiasi nama file tidak lengkap atau tidak valid. |
|
Transaksi DDE tidak dapat diselesaikan karena transaksi DDE lainnya sedang diproses. |
|
Transaksi DDE gagal. |
|
Transaksi DDE tidak dapat diselesaikan karena waktu permintaan habis. |
|
DLL yang ditentukan tidak ditemukan. |
|
File yang ditentukan tidak ditemukan. |
|
Tidak ada aplikasi yang terkait dengan ekstensi nama file yang diberikan. Kesalahan ini juga akan dikembalikan jika Anda mencoba mencetak file yang tidak dapat dicetak. |
|
Memori tidak cukup untuk menyelesaikan operasi. |
|
Jalur yang ditentukan tidak ditemukan. |
|
Terjadi pelanggaran berbagi. |
Panggil GetLastError untuk informasi kesalahan yang diperluas.
Keterangan
Karena ShellExecute dapat mendelegasikan eksekusi ke ekstensi Shell (sumber data, penangan menu konteks, implementasi kata kerja) yang diaktifkan menggunakan Model Objek Komponen (COM), COM harus diinisialisasi sebelum ShellExecute dipanggil. Beberapa ekstensi Shell memerlukan jenis COM single-threaded apartment (STA). Dalam hal ini, COM harus diinisialisasi seperti yang ditunjukkan di sini:
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
Tentu saja ada instans di mana ShellExecute tidak menggunakan salah satu jenis ekstensi Shell ini dan instans tersebut tidak akan mengharuskan COM untuk diinisialisasi sama sekali. Meskipun demikian, ada baiknya untuk selalu menginisialisasi COM sebelum menggunakan fungsi ini.
Metode ini memungkinkan Anda untuk menjalankan perintah apa pun di menu pintasan folder atau disimpan di registri.
Untuk membuka folder, gunakan salah satu panggilan berikut:
ShellExecute(handle, NULL, <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);
atau
ShellExecute(handle, "open", <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);
Untuk menjelajahi folder, gunakan panggilan berikut:
ShellExecute(handle, "explore", <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);
Untuk meluncurkan utilitas Temukan Shell untuk direktori, gunakan panggilan berikut.
ShellExecute(handle, "find", <fully_qualified_path_to_folder>, NULL, NULL, 0);
Jika lpOperationADALAH NULL, fungsi akan membuka file yang ditentukan oleh lpFile. Jika lpOperation "terbuka" atau "jelajahi", fungsi mencoba membuka atau menjelajahi folder.
Untuk mendapatkan informasi tentang aplikasi yang diluncurkan sebagai akibat dari panggilan ShellExecute, gunakan ShellExecuteEx.
Catatan
Header shellapi.h mendefinisikan ShellExecute sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | shellapi.h |
Pustaka | Shell32.lib |
DLL | Shell32.dll (versi 3.51 atau yang lebih baru) |
Lihat juga
Meluncurkan Aplikasi (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)