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.

Catatan Nilai ini tidak didukung di Windows Vista dan sistem yang lebih baru.
 

CMIC_MASK_HASTITLE

Anggota lpTitle valid.

Catatan Nilai ini tidak didukung di Windows Vista dan sistem yang lebih baru.
 

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.

Catatan Sebelum Windows Vista, struktur ini dideklarasikan dalam Shlobj.h.
 

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)