Praktik Terbaik untuk Penangan Menu Pintasan dan Beberapa Kata Kerja

Topik ini diatur sebagai berikut:

Praktik Terbaik

Kata kerja statis adalah kata kerja paling sederhana untuk diimplementasikan, dan menyediakan fungsionalitas yang kaya. Kami sangat mendorong Anda untuk menerapkan kata kerja menggunakan salah satu metode kata kerja statis.

Praktik Terbaik untuk Implementasi Kata Kerja

Daftar berikut mewakili praktik terbaik untuk implementasi kata kerja:

  • Selalu pilih metode kata kerja paling sederhana yang memenuhi kebutuhan Anda.
  • Gunakan metode kata kerja statis, jika memungkinkan.
  • Jangan melakukan operasi intensif sumber daya atau I/O pada utas UI. IShellExtInit::Initialize dan IContextMenu::QueryContextMenu harus sangat konservatif dalam pekerjaan yang mereka lakukan. IContextMenu::InvokeCommand harus dilakukan dalam proses lain, atau Anda harus membuat utas baru untuk menghindari pemblokiran penelepon.
  • Kata kerja awalan dengan nama vendor perangkat lunak independen (ISV) sebagai berikut, ISVName.verb. Menggunakan nama yang tidak memenuhi syarat dapat mengakibatkan tabrakan dengan beberapa ISV yang memilih nama kata kerja yang sama.
  • Selalu gunakan ProgID khusus aplikasi. Karena beberapa jenis item tidak menggunakan pemetaan ini, perlu adanya nama unik vendor.
  • Posisikan UI relatif terhadap metode pemanggilan, tetapi jangan berjalan pada utas pemanggil.
  • Jangan terima nilai pengembalian S_OK untuk kata kerja kanonis yang diteruskan ke metode IContextMenu::InvokeCommand . Melakukannya menyebabkan kegagalan implementasi kata kerja nyata dipanggil, dan mengembalikan kode kegagalan untuk kata kerja kanonis. Jika Anda tidak mendukung kata kerja kanonis, maka kembalikan kegagalan ketika nilai HIWORD(lpVerb) nonzero ditemui.
  • Hindari penggunaan rundll32.exe sebagai host untuk kata kerja Anda.
  • Saat menerapkan IContextMenu::QueryContextMenu pastikan untuk mengembalikan jumlah kata kerja yang telah ditambahkan ke menu melalui nilai HRESULT menggunakan makro ResultFromShort.
  • Jika Anda mendaftar pada salah satu entri kunci registri berikut, berhati-hatilah dan pastikan untuk mendaftarkan handler Anda pada jenis yang paling spesifik untuk mengurangi konsekuensi yang mungkin tidak diinginkan:
    • HKEY_CLASSES_ROOT\*
    • HKEY_CLASSES_ROOT\AllFileSystemObjects
    • HKEY_CLASSES_ROOT\Folder
    • HKEY_CLASSES_ROOT\Directory
  • Atur kunci MayChangeDefaultMenu hanya jika Anda mengantisipasi bahwa Anda mungkin perlu mengubah kata kerja default di menu pintasan. Jika handler Anda tidak mengubah kata kerja default, maka Anda tidak boleh mengatur kunci ini karena melakukannya menyebabkan sistem memuat DLL Anda tidak perlu.
  • Minimalkan pekerjaan yang Anda lakukan di IShellExtInit::Initialize. Untuk penangan menu pintasan, ambil objek data yang diteruskan ke IShellExtInit::Initialize, lalu proses di IContextMenu::QueryContextMenu, atau IContextMenu::InvokeCommand.

Praktik Terbaik untuk Beberapa Kata Kerja Pilihan

Karena jumlah item dalam skenario kata kerja multi-pilihan bisa besar, penting bahwa Anda mempertimbangkan implikasi performa implementasi kata kerja Anda. Misalnya, ketika pengguna mencari "*" di atas cakupan yang menyertakan item dalam jumlah besar, lalu mengklik Pilih Semua dan klik kanan, kata kerja disajikan dengan pilihan yang dapat memiliki ribuan item di dalamnya. Akibatnya, kata kerja hanya boleh mempertimbangkan item pertama dalam pilihan, dan jumlah item keseluruhan. Item pertama didefinisikan sebagai item di bagian atas tampilan, atau item yang pertama kali diklik kanan pengguna.

Di Windows 7 dan yang lebih baru, jumlah item yang diteruskan ke kata kerja dibatasi hingga 16 saat menu pintasan dikueri. Kata kerja kemudian dibuat ulang dan diinisialisasi ulang dengan pilihan penuh ketika kata kerja tersebut dipanggil.

Sangat tepat dalam beberapa kasus untuk mempertimbangkan sejumlah kecil item tetap. Misalnya, sesuai untuk kata kerja "diff" untuk mempertimbangkan hanya dua item pertama. Umumnya, Anda tidak perlu menguji setiap item dalam pilihan untuk melihat apakah itu adalah jenis tertentu, atau mengkueri setiap item dalam pilihan untuk propertinya. Lihat item pertama dan putuskan apakah tepat untuk menambahkan kata kerja Anda.

Pilihan Heterogen

Kata kerja optimis secara otomatis ditambahkan dalam kasus multi-pilihan, dengan asumsi bahwa item yang tidak ditentukan dapat ditangani oleh kata kerja. Sebaliknya, kata kerja pesimis tidak ditambahkan ketika pilihan berisi item yang tidak ditentukan, dan hanya ditambahkan dalam kasus di mana jumlah item kecil.

Kata kerja gaya pemutar harus optimis, dan diam-diam melewati item yang tidak ditangani. Jika kegagalan untuk bertindak pada item dapat menyebabkan kehilangan atau kebingungan data, kata kerja harus memperingatkan pengguna tentang item yang tidak dapat diproses. Misalnya kata kerja "cadangan" harus menunjukkan bahwa beberapa item tidak dapat dicadangkan.

Memilih Kata Kerja Statis atau Dinamis untuk Menu Pintasan Anda

Membuat Penangan Menu Pintasan

Menyesuaikan Menu Pintasan Menggunakan Kata Kerja Dinamis

Menu Pintasan (Konteks) dan Penangan Menu Pintasan

Kata kerja dan Asosiasi File

Referensi Menu Pintasan