Struktur CMINVOKECOMMANDINFOEX (shobjidl_core.h)
Berisi informasi yang diperluas tentang perintah menu pintasan. Struktur ini adalah versi CMINVOKECOMMANDINFO yang diperluas yang memungkinkan penggunaan nilai Unicode.
Sintaks
typedef struct _CMINVOKECOMMANDINFOEX {
DWORD cbSize;
DWORD fMask;
HWND hwnd;
LPCSTR lpVerb;
LPCSTR lpParameters;
LPCSTR lpDirectory;
int nShow;
DWORD dwHotKey;
HANDLE hIcon;
LPCSTR lpTitle;
LPCWSTR lpVerbW;
LPCWSTR lpParametersW;
LPCWSTR lpDirectoryW;
LPCWSTR lpTitleW;
POINT ptInvoke;
} CMINVOKECOMMANDINFOEX;
Anggota
cbSize
Jenis: DWORD
Ukuran struktur ini, dalam byte. Anggota ini harus diisi oleh penelepon IContextMenu::InvokeCommand dan diuji oleh implementasi untuk mengetahui bahwa strukturnya adalah struktur CMINVOKECOMMANDINFOEX daripada CMINVOKECOMMANDINFO.
fMask
Jenis: DWORD
Nol, atau satu atau beberapa bendera berikut diatur untuk menunjukkan perilaku yang diinginkan dan menunjukkan bahwa bidang lain dalam struktur akan digunakan.
CMIC_MASK_HOTKEY
Anggota dwHotKey valid.
CMIC_MASK_ICON
Anggota hIcon valid. Pada Windows Vista, bendera ini tidak digunakan.
CMIC_MASK_FLAG_NO_UI
Implementasi IContextMenu::InvokeCommand dicegah untuk menampilkan elemen antarmuka pengguna (misalnya, pesan kesalahan) saat melakukan perintah.
CMIC_MASK_UNICODE
Handler menu pintasan harus menggunakan anggota lpVerbW, lpParametersW, lpDirectoryW, dan lpTitleW alih-alih setara DENGAN ANSI mereka. Karena beberapa penangan menu pintasan mungkin tidak mendukung Unicode, Anda juga harus meneruskan string ANSI yang valid di anggota lpVerb, lpParameters, lpDirectory, dan lpTitle .
CMIC_MASK_NO_CONSOLE
Jika penangan menu pintasan perlu membuat proses baru, biasanya akan membuat konsol baru. Mengatur bendera CMIC_MASK_NO_CONSOLE menekan pembuatan konsol baru.
CMIC_MASK_HASLINKNAME
Anggota lpTitle berisi jalur lengkap ke file pintasan. Gunakan bersama dengan CMIC_MASK_HASTITLE.
CMIC_MASK_HASTITLE
Anggota lpTitle valid.
CMIC_MASK_FLAG_SEP_VDM
Bendera ini hanya valid jika mengacu pada aplikasi berbasis Windows 16-bit. Jika diatur, aplikasi yang disortir pintasan untuk berjalan di Virtual DOS Machine (VDM) privat. Lihat Keterangan.
CMIC_MASK_ASYNCOK
Implementasi IContextMenu::InvokeCommand dapat memutar utas atau proses baru untuk menangani panggilan dan tidak perlu memblokir penyelesaian fungsi yang dipanggil. Misalnya, jika kata kerja "hapus" panggilan IContextMenu::InvokeCommand dapat kembali sebelum semua item dihapus. Karena ini adalah saran, memanggil aplikasi yang menentukan bendera ini tidak dapat menjamin bahwa permintaan ini akan dihormati jika mereka tidak terbiasa dengan implementasi kata kerja yang mereka panggil.
CMIC_MASK_NOASYNC
Windows Vista dan yang lebih baru. Implementasi IContextMenu::InvokeCommand harus sinkron, tidak kembali sebelum selesai. Karena ini direkomendasikan, memanggil aplikasi yang menentukan bendera ini tidak dapat menjamin bahwa permintaan ini akan dihormati jika mereka tidak terbiasa dengan implementasi kata kerja yang mereka panggil.
CMIC_MASK_SHIFT_DOWN
Tombol SHIFT ditekan. Gunakan ini alih-alih polling status keyboard saat ini yang mungkin telah berubah sejak kata kerja dipanggil.
CMIC_MASK_CONTROL_DOWN
Tombol CTRL ditekan. Gunakan ini alih-alih polling status keyboard saat ini yang mungkin telah berubah sejak kata kerja dipanggil.
CMIC_MASK_FLAG_LOG_USAGE
Menunjukkan bahwa implementasi IContextMenu::InvokeCommand mungkin ingin melacak item yang dipanggil untuk fitur seperti menu "Dokumen terbaru".
CMIC_MASK_NOZONECHECKS
Jangan lakukan pemeriksaan zona. Bendera ini memungkinkan ShellExecuteEx untuk melewati pemeriksaan zona yang diberlakukan oleh IAttachmentExecute.
CMIC_MASK_PTINVOKE
Anggota ptInvoke valid.
hwnd
Jenis: HWND
Handel ke jendela yang merupakan pemilik menu pintasan. Ekstensi juga dapat menggunakan handel ini sebagai pemilik kotak pesan atau kotak dialog apa pun yang ditampilkannya. Penelepon harus menentukan HWND sah yang dapat digunakan sebagai jendela pemilik untuk UI apa pun yang mungkin ditampilkan. Gagal menentukan HWND saat memanggil dari utas UI (satu dengan jendela yang sudah dibuat) akan mengakibatkan masuknya kembali dan kemungkinan bug dalam implementasi panggilan IContextMenu::InvokeCommand .
lpVerb
Jenis: LPCSTR
Alamat string yang dihentikan null yang menentukan nama perintah yang tidak bergantung pada bahasa yang akan dilakukan. Anggota ini biasanya merupakan string ketika perintah sedang diaktifkan oleh aplikasi. Sistem menyediakan nilai konstanta yang telah ditentukan sebelumnya untuk string perintah berikut.
Terus-menerus | String perintah |
---|---|
CMDSTR_RUNAS | "RunAs" |
CMDSTR_PRINT | "Cetak" |
CMDSTR_PREVIEW | "Pratinjau" |
CMDSTR_OPEN | "Buka" |
Ini bukan set tetap; kata kerja kanonis baru dapat ditemukan oleh penangan menu konteks dan aplikasi dapat memanggilnya.
Jika ada kata kerja kanonis dan penangan menu tidak mengimplementasikan kata kerja kanonis, itu harus mengembalikan kode kegagalan untuk memungkinkan handler berikutnya untuk dapat menangani kata kerja ini. Gagal melakukan ini akan merusak fungsionalitas dalam sistem termasuk ShellExecute.
Atau, daripada pointer, parameter ini dapat berupa MAKEINTRESOURCE(offset) di mana offset adalah offset pengidentifikasi menu dari perintah yang akan dilakukan. Implementasi dapat menggunakan makro IS_INTRESOURCE untuk mendeteksi bahwa alternatif ini sedang digunakan. Shell menggunakan alternatif ini saat pengguna memilih perintah menu.
lpParameters
Jenis: LPCSTR
Parameter opsional. Anggota ini selalu NULL untuk item menu yang disisipkan oleh ekstensi Shell.
lpDirectory
Jenis: LPCSTR
Nama direktori kerja opsional. Anggota ini selalu NULL untuk item menu yang disisipkan oleh ekstensi Shell.
nShow
Jenis: int
Sekumpulan nilai SW_ untuk diteruskan ke fungsi ShowWindow jika perintah menampilkan jendela atau memulai aplikasi.
dwHotKey
Jenis: DWORD
Pintasan keyboard opsional untuk ditetapkan ke aplikasi apa pun yang diaktifkan oleh perintah. Jika anggota fMask tidak menentukan CMIC_MASK_HOTKEY, anggota ini diabaikan.
hIcon
Jenis: HANDEL
Ikon yang digunakan untuk aplikasi apa pun yang diaktifkan oleh perintah. Jika anggota fMask tidak menentukan CMIC_MASK_ICON, anggota ini diabaikan.
lpTitle
Jenis: LPCSTR
Judul ASCII.
lpVerbW
Jenis: LPCWSTR
Kata kerja Unicode, untuk perintah yang dapat menggunakannya.
lpParametersW
Jenis: LPCWSTR
Parameter Unicode, untuk perintah yang dapat menggunakannya.
lpDirectoryW
Jenis: LPCWSTR
Direktori Unicode, untuk perintah yang dapat menggunakannya.
lpTitleW
Jenis: LPCWSTR
Sebuah judul Unicode.
ptInvoke
Jenis: TITIK
Titik di mana perintah dipanggil. Jika anggota fMask tidak menentukan CMIC_MASK_PTINVOKE, anggota ini diabaikan. Anggota ini tidak valid sebelum Internet Explorer 4.0.
Keterangan
Meskipun deklarasi IContextMenu::InvokeCommand menentukan struktur CMINVOKECOMMANDINFO untuk parameter pici , ia juga dapat menerima struktur CMINVOKECOMMANDINFOEX . Jika Anda menerapkan metode ini, Anda harus memeriksa cbSize untuk menentukan struktur mana yang telah dilewati.
Secara default, semua aplikasi berbasis Windows 16-bit berjalan sebagai utas dalam satu VDM bersama. Keuntungan berjalan secara terpisah adalah bahwa crash hanya mengakhiri VDM tunggal; program lain yang berjalan dalam VDM yang berbeda terus berfungsi secara normal. Selain itu, aplikasi berbasis Windows 16-bit yang dijalankan dalam VDM terpisah memiliki antrean input terpisah. Itu berarti bahwa jika satu aplikasi berhenti merespons sesaat, aplikasi di VDM terpisah terus menerima input. Kerugian berjalan secara terpisah adalah dibutuhkan lebih banyak memori untuk melakukannya secara signifikan.
CMINVOKECOMMANDINFOEX sendiri didefinisikan dalam Shobjidl.h, tetapi Anda juga harus menyertakan Shellapi.h untuk memiliki akses penuh ke semua bendera.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional, Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Header | shobjidl_core.h (termasuk Shobjidl.h) |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk