Membuat Penangan Menu Pintasan
Penangan menu pintasan, juga dikenal sebagai penangan menu konteks atau handler kata kerja, adalah jenis penangan jenis file. Handler ini dapat diimplementasikan dengan cara yang menyebabkan mereka memuat dalam proses mereka sendiri atau di penjelajah, atau proses pihak ke-3 lainnya. Berhati-hatilah saat membuat handler dalam proses karena dapat membahayakan proses yang memuatnya.
Catatan
Ada pertimbangan khusus untuk versi Windows berbasis 64-bit saat mendaftarkan handler yang berfungsi dalam konteks aplikasi 32-bit: ketika dipanggil dalam konteks aplikasi bitness yang berbeda, subsistem WOW64 mengalihkan akses sistem file ke beberapa jalur. Jika handler .exe Anda disimpan di salah satu jalur tersebut, handler tidak dapat diakses dalam konteks ini. Oleh karena itu, sebagai pekerjaan, simpan .exe Anda di jalur yang tidak dialihkan, atau simpan versi stub .exe Anda yang meluncurkan versi nyata.
Topik ini diatur sebagai berikut:
- Kata Kerja Kanonis
- Kata Kerja yang Diperluas
- Kata Kerja Khusus Akses Terprogram
- Menyesuaikan Menu Pintasan Menggunakan Kata Kerja Statis
- Mengaktifkan Handler Anda Menggunakan Antarmuka IDropTarget
- Menentukan Posisi dan Urutan Kata Kerja Statis
- Kata Kerja Penempatan di Atas atau Bawah Menu
- Membuat Menu Berskala Statis
- Mendapatkan Perilaku Dinamis untuk Kata Kerja Statis dengan Menggunakan Sintaks Kueri Tingkat Lanjut
- Tidak digunakan lagi: Mengaitkan Kata Kerja dengan Perintah Pertukaran Data Dinamis
- Menyelesaikan Tugas Implementasi Kata Kerja
- Topik terkait
Kata Kerja Kanonis
Aplikasi umumnya bertanggung jawab untuk menyediakan string tampilan yang dilokalkan untuk kata kerja yang mereka tentukan. Namun, untuk memberikan tingkat kemandirian bahasa, sistem mendefinisikan set standar kata kerja yang umum digunakan yang disebut kata kerja kanonis. Kata kerja kanonis tidak pernah ditampilkan kepada pengguna, dan dapat digunakan dengan bahasa UI apa pun. Sistem menggunakan nama kanonis untuk secara otomatis menghasilkan string tampilan yang dilokalkan dengan benar. Misalnya, string tampilan kata kerja terbuka diatur ke Buka pada sistem bahasa Inggris, dan ke bahasa Jerman yang setara pada sistem Jerman.
Kata kerja kanonis | Deskripsi |
---|---|
Buka | Membuka file atau folder. |
Opennew | Membuka file atau folder di jendela baru. |
Cetak | Mencetak file. |
Cetak ke | Mengizinkan pengguna mencetak file dengan menyeretnya ke objek printer. |
Jelajahi | Membuka Windows Explorer dengan folder terpilih. |
Properti | Membuka lembar properti objek. |
Catatan
Kata kerja Printto juga kanonis, tetapi tidak pernah ditampilkan. Penyertaannya memungkinkan pengguna mencetak file dengan menyeretnya ke objek printer.
Penangan menu pintasan dapat menyediakan kata kerja kanonis mereka sendiri melalui IContextMenu::GetCommandString dengan GCS_VERBW, atau GCS_VERBA. Sistem akan menggunakan kata kerja kanonis sebagai parameter kedua (lpOperation) yang diteruskan ke ShellExecute, dan merupakan CMINVOKECOMMANDINFO.Anggota lpVerb diteruskan ke metode IContextMenu::InvokeCommand.
Kata Kerja yang Diperluas
Saat pengguna mengklik kanan objek, menu pintasan menampilkan kata kerja default. Anda mungkin ingin menambahkan dan mendukung perintah pada beberapa menu pintasan yang tidak ditampilkan di setiap menu pintasan. Misalnya, Anda dapat memiliki perintah yang tidak umum digunakan atau yang ditujukan untuk pengguna berpengalaman. Untuk alasan ini, Anda juga dapat menentukan satu atau beberapa kata kerja yang diperluas. Kata kerja ini mirip dengan kata kerja normal, tetapi dibedakan dari kata kerja normal dengan cara mereka terdaftar. Untuk memiliki akses ke kata kerja yang diperluas, pengguna harus mengklik kanan objek sambil menekan tombol SHIFT. Ketika pengguna melakukannya, kata kerja yang diperluas ditampilkan selain kata kerja default.
Anda dapat menggunakan registri untuk menentukan satu atau beberapa kata kerja yang diperluas. Perintah terkait hanya akan ditampilkan saat pengguna mengklik kanan objek sekaligus menekan tombol SHIFT. Untuk menentukan kata kerja sebagai diperluas, tambahkan nilai REG_SZ "diperluas" ke subkunji kata kerja. Nilai tidak boleh memiliki data apa pun yang terkait dengannya.
Kata Kerja Khusus Akses Terprogram
Kata kerja ini tidak pernah ditampilkan dalam menu konteks. Ini dapat diakses dengan menggunakan ShellExecuteEx dan menentukan bidang lpVerb parameter pExecInfo (objek SHELLEXECUTEINFO). Untuk menentukan kata kerja sebagai akses terprogram saja, tambahkan nilai REG_SZ "ProgrammaticAccessOnly" ke subkuncar kata kerja. Nilai tidak boleh memiliki data apa pun yang terkait dengannya.
Anda dapat menggunakan registri untuk menentukan satu atau beberapa kata kerja yang diperluas. Perintah terkait hanya akan ditampilkan saat pengguna mengklik kanan objek sekaligus menekan tombol SHIFT. Untuk menentukan kata kerja sebagai diperluas, tambahkan nilai REG_SZ "diperluas" ke subkunji kata kerja. Nilai tidak boleh memiliki data apa pun yang terkait dengannya.
Menyesuaikan Menu Pintasan Menggunakan Kata Kerja Statis
Setelah Memilih Kata Kerja Statis atau Dinamis untuk Menu Pintasan, Anda dapat memperluas menu pintasan untuk jenis file dengan mendaftarkan kata kerja statis untuk jenis file. Untuk melakukannya, tambahkan subkey Shell di bawah subkunjuk untuk ProgID aplikasi yang terkait dengan jenis file. Secara opsional, Anda dapat menentukan kata kerja default untuk jenis file dengan menjadikannya nilai default subkuntah Shell .
Kata kerja default ditampilkan terlebih dahulu pada menu pintasan. Tujuannya adalah untuk menyediakan Shell dengan kata kerja yang dapat digunakan ketika fungsi ShellExecuteEx dipanggil, tetapi tidak ada kata kerja yang ditentukan. Shell tidak selalu memilih kata kerja default ketika ShellExecuteEx digunakan dalam mode ini.
Shell menggunakan kata kerja pertama yang tersedia dalam urutan berikut:
- Kata kerja default
- Kata kerja pertama dalam registri, jika urutan kata kerja ditentukan
- Kata kerja Buka
- Kata kerja Buka Dengan
Jika tidak ada kata kerja yang tercantum tersedia, operasi gagal.
Buat satu subkunci untuk setiap kata kerja yang ingin Anda tambahkan di bawah subkunci Shell. Masing-masing subkunci ini harus memiliki nilai REG_SZ yang diatur ke string tampilan kata kerja (string yang dilokalkan). Untuk setiap subkunci kata kerja, buat subkunci perintah dengan nilai default yang diatur ke baris perintah untuk mengaktifkan item. Untuk kata kerja kanonis, seperti Buka dan Cetak, Anda dapat menghilangkan string tampilan karena sistem secara otomatis menampilkan string yang dilokalkan dengan benar. Untuk kata kerja nonkanonis, jika Anda menghilangkan string tampilan, string kata kerja ditampilkan.
Dalam contoh registri berikut, perhatikan bahwa:
- Karena Doit bukan kata kerja kanonis, doit diberi nama tampilan, yang dapat dipilih dengan menekan tombol D.
- Kata kerja Printto tidak muncul pada menu pintasan. Namun, penyertaannya dalam registri memungkinkan pengguna untuk mencetak file dengan menjatuhkannya pada ikon printer.
- Satu subkunjuk ditampilkan untuk setiap kata kerja. %1 mewakili nama file dan %2 nama printer.
HKEY_CLASSES_ROOT
.myp-ms
(Default) = MyProgram.1
MyProgram.1
(Default) = My Program Application
Shell
(Default) = doit
doit
(Default) = &Do It
command
(Default) = c:\MyDir\MyProgram.exe /d "%1"
open
command
(Default) = c:\MyDir\MyProgram.exe /d "%1"
print
command
(Default) = c:\MyDir\MyProgram.exe /p "%1"
printto
command
(Default) = c:\MyDir\MyProgram.exe /p "%1" "%2"
Diagram berikut mengilustrasikan ekstensi menu pintasan sesuai dengan entri registri di atas. Menu pintasan ini memiliki kata kerja Buka, Lakukan, dan Cetak pada menunya, dengan Do It sebagai kata kerja default.
Mengaktifkan Handler Anda Menggunakan Antarmuka IDropTarget
Dynamic Data Exchange (DDE) tidak digunakan lagi; gunakan IDropTarget sebagai gantinya. IDropTarget lebih kuat dan memiliki dukungan aktivasi yang lebih baik karena menggunakan aktivasi COM dari handler. Dalam kasus pemilihan beberapa item, IDropTarget tidak tunduk pada pembatasan ukuran buffer yang ditemukan di DDE dan CreateProcess. Selain itu, item diteruskan ke aplikasi sebagai objek data yang dapat dikonversi ke array item dengan menggunakan fungsi SHCreateShellItemArrayFromDataObject. Melakukannya lebih sederhana, dan tidak kehilangan informasi namespace seperti yang terjadi ketika item dikonversi ke jalur untuk protokol baris perintah atau DDE.
Untuk informasi selengkapnya tentang kueri IDropTarget dan Shell untuk atribut asosiasi file, lihat Jenis yang Dirasakan dan Pendaftaran Aplikasi.
Menentukan Posisi dan Urutan Kata Kerja Statis
Biasanya kata kerja diurutkan pada menu pintasan berdasarkan bagaimana kata kerja tersebut dijumlahkan; enumerasi didasarkan pertama pada urutan array asosiasi, lalu pada urutan item dalam array asosiasi, seperti yang didefinisikan oleh urutan pengurutan registri.
Kata kerja dapat diurutkan dengan menentukan nilai default subkunci Shell untuk entri asosiasi. Nilai default ini dapat mencakup satu item, yang akan ditampilkan di posisi atas menu pintasan, atau daftar item yang dipisahkan oleh spasi atau koma. Dalam kasus terakhir, item pertama dalam daftar adalah item default, dan kata kerja lainnya ditampilkan tepat di bawahnya dalam urutan yang ditentukan.
Misalnya, entri registri berikut menghasilkan kata kerja menu pintasan dalam urutan berikut:
- Tampilan
- Gadget
- Personalisasi
HKEY_CLASSES_ROOT
DesktopBackground
Shell
Display
Gadgets
Personalization
Demikian pula, entri registri berikut menghasilkan kata kerja menu pintasan dalam urutan berikut:
- Personalisasi
- Gadget
- Tampilan
HKEY_CLASSES_ROOT
DesktopBackground
Shell = "Personalization,Gadgets"
Display
Kata Kerja Penempatan di Atas atau Bawah Menu
Atribut registri berikut dapat digunakan untuk menempatkan kata kerja di bagian atas atau bawah menu. Jika ada beberapa kata kerja yang menentukan atribut ini, maka yang terakhir untuk melakukannya mendapatkan prioritas:
Position=Top | Bottom
Membuat Menu Berskala Statis
Di Windows 7 dan yang lebih baru, implementasi menu bertingkat didukung melalui pengaturan registri. Sebelum Windows 7, pembuatan menu berjenjang hanya dimungkinkan melalui implementasi antarmuka IContextMenu . Di Windows 7 dan yang lebih baru, Anda harus menggunakan solusi berbasis kode COM hanya ketika metode statis tidak mencukupi.
Cuplikan layar berikut memberikan contoh menu bertingkat.
Di Windows 7 dan yang lebih baru, ada tiga cara untuk membuat menu berskala:
- Membuat Menu Bertingkat dengan Entri Registri Sub-Perintah
- Membuat Menu Bertingkat dengan Entri Registri ExtendedSubCommandsKey
- Membuat Menu Berskala dengan Antarmuka IExplorerCommand
Membuat Menu Bertingkat dengan Entri Registri Sub-Perintah
Di Windows 7 dan yang lebih baru, Anda dapat menggunakan entri Sub-Perintah untuk membuat menu berkala dengan menggunakan prosedur berikut.
Untuk membuat menu berskala dengan menggunakan entri Sub-Perintah
Buat subkunci di bawah shell HKEY_CLASSES_ROOT\ProgID\untuk mewakili menu berjenjang Anda. Dalam contoh ini, kami memberikan nama cascadeTest pada subkunkey ini. Pastikan bahwa nilai default subkuntah CascadeTest kosong, dan ditampilkan sebagai (nilai tidak diatur).
HKEY_CLASSES_ROOT * shell CascadeTest (Default)
Ke subkuncu CascadeTest Anda, tambahkan entri jenis MUIVerb REG_SZ dan tetapkan teks yang akan muncul sebagai namanya di menu pintasan. Dalam contoh ini, kami menetapkannya "Test Cascade Menu".
HKEY_CLASSES_ROOT * shell CascadeTest (Default) MUIVerb = Test Cascade Menu
Ke subkunci CascadeTest Anda, tambahkan entri SubCommands jenis REG_SZ yang ditetapkan daftar, dibatasi oleh titik koma, dari kata kerja yang akan muncul di menu, dalam urutan penampilan. Misalnya, di sini kami menetapkan sejumlah kata kerja yang disediakan sistem:
HKEY_CLASSES_ROOT * Shell CascadeTest SubCommands Windows.delete;Windows.properties;Windows.rename;Windows.cut;Windows.copy;Windows.paste
Dalam kasus kata kerja kustom, terapkan menggunakan salah satu metode implementasi kata kerja statis dan cantumkan di bawah subkunjuk CommandStore seperti yang ditunjukkan dalam contoh ini untuk kata kerja fiksi VerbName:
HKEY_LOCAL_MACHINE Software Microsoft Windows CurrentVersion Explorer CommandStore Shell VerbName command (Default) = notepad.exe %1
Catatan
Metode ini memiliki keuntungan bahwa kata kerja kustom dapat didaftarkan sekali dan digunakan kembali dengan mencantumkan nama kata kerja di bawah entri SubCommands. Namun, aplikasi mengharuskan aplikasi memiliki izin untuk memodifikasi registri di bawah HKEY_LOCAL_MACHINE.
Membuat Menu Bertingkat dengan Entri Registri ExtendedSubCommandsKey
Di Windows 7 dan yang lebih baru, Anda dapat menggunakan entri ExtendedSubCommandKey untuk membuat menu kaskading yang diperluas: menu berskala dalam menu berskala.
Cuplikan layar berikut adalah contoh menu bertingkat yang diperluas.
Karena HKEY_CLASSES_ROOT adalah kombinasi dari HKEY_CURRENT_USER dan HKEY_LOCAL_MACHINE, Anda dapat mendaftarkan kata kerja kustom apa pun di bawah subkunci Kelas Perangkat Lunak\HKEY_CURRENT_USER.\ Keuntungan utama dari melakukannya adalah bahwa izin yang ditingkatkan tidak diperlukan. Selain itu, asosiasi file lain dapat menggunakan kembali seluruh kumpulan kata kerja ini dengan menentukan subkunci ExtendedSubCommandsKey yang sama. Jika Anda tidak perlu menggunakan kembali kumpulan kata kerja ini, Anda dapat mencantumkan kata kerja di bawah induk, tetapi memastikan bahwa nilai Default induk kosong.
Untuk membuat menu berskala dengan menggunakan entri ExtendedSubCommandsKey
Buat subkunci di bawah shell HKEY_CLASSES_ROOT\ProgID\untuk mewakili menu berjenjang Anda. Dalam contoh ini, kami memberikan nama cascadeTest2 pada subkunkey ini. Pastikan bahwa nilai default subkuntah CascadeTest kosong, dan ditampilkan sebagai (nilai tidak diatur).
HKEY_CLASSES_ROOT * shell CascadeTest2 (Default)
Ke subkuncu CascadeTest Anda, tambahkan entri jenis MUIVerb REG_SZ dan tetapkan teks yang akan muncul sebagai namanya di menu pintasan. Dalam contoh ini, kami menetapkannya "Test Cascade Menu".
HKEY_CLASSES_ROOT * shell CascadeTest (Default) MUIVerb = Test Cascade Menu 2
Di bawah subkunci CascadeTest yang telah Anda buat, tambahkan subkunci ExtendedSubCommandsKey, lalu tambahkan subperintah dokumen (dari jenis REG_SZ); misalnya:
HKEY_CLASSES_ROOT txtfile Shell Test Cascade Menu 2 (Default) ExtendedSubCommandsKey Layout Properties Select all
Pastikan bahwa nilai default subkuntang Test Cascade Menu 2 kosong, dan ditampilkan sebagai (nilai tidak diatur).
Isi subverb menggunakan salah satu implementasi kata kerja statis berikut. Perhatikan bahwa subkunci CommandFlags mewakili nilai EXPCMDFLAGS. Jika Anda ingin menambahkan pemisah sebelum atau sesudah item menu kaskade, gunakan ECF_SEPARATORBEFORE (0x20) atau ECF_SEPARATORAFTER (0x40). Untuk deskripsi bendera Windows 7 dan yang lebih baru ini, lihat IExplorerCommand::GetFlags. ECF_SEPARATORBEFORE hanya berfungsi untuk item menu tingkat atas. MUIVerb berjenis REG_SZ, dan CommandFlags berjenis REG_DWORD.
HKEY_CLASSES_ROOT txtile Shell Test Cascade Menu 2 (Default) ExtendedSubCommandsKey Shell cmd1 MUIVerb = Notepad command (Default) = %SystemRoot%\system32\notepad.exe %1 cmd2 MUIVerb = Wordpad CommandFlags = 0x20 command (Default) = "C:\Program Files\Windows NT\Accessories\wordpad.exe" %1
Cuplikan layar berikut adalah ilustrasi contoh entri kunci registri sebelumnya.
Membuat Menu Berskala dengan Antarmuka IExplorerCommand
Opsi lain untuk menambahkan kata kerja ke menu kaskade adalah melalui IExplorerCommand::EnumSubCommands. Metode ini memungkinkan sumber data yang menyediakan perintah modul perintah mereka melalui IExplorerCommandProvider untuk menggunakan perintah tersebut sebagai kata kerja pada menu pintasan. Di Windows 7 dan yang lebih baru, Anda dapat memberikan implementasi kata kerja yang sama menggunakan IExplorerCommand seperti yang Anda bisa dengan IContextMenu.
Dua cuplikan layar berikut mengilustrasikan penggunaan menu bertingkat di folder Perangkat .
Cuplikan layar berikut mengilustrasikan implementasi lain dari menu bertingkat di folder Perangkat .
Catatan
Karena IExplorerCommand hanya mendukung aktivasi dalam proses, disarankan untuk digunakan oleh sumber data Shell yang perlu berbagi implementasi antara perintah dan menu pintasan.
Mendapatkan Perilaku Dinamis untuk Kata Kerja Statis dengan Menggunakan Sintaks Kueri Tingkat Lanjut
Sintaks Kueri Tingkat Lanjut (AQS) dapat mengekspresikan kondisi yang akan dievaluasi menggunakan properti dari item yang digunakan kata kerja. Sistem ini hanya bekerja dengan properti cepat. Ini adalah properti yang dilaporkan sumber data Shell secepat dengan tidak mengembalikan SHCOLSTATE_SLOW dari IShellFolder2::GetDefaultColumnState.
Windows 7 dan yang lebih baru mendukung nilai kanonis yang menghindari masalah pada build yang dilokalkan. Sintaksis kanonis berikut diperlukan pada build yang dilokalkan untuk memanfaatkan peningkatan Windows 7 ini.
System.StructuredQueryType.Boolean#True
Dalam contoh entri registri berikut:
- Nilai TerapkanKe mengontrol apakah kata kerja ditampilkan atau disembunyikan.
- Nilai DefaultAppliesTo mengontrol kata kerja mana yang merupakan default.
- Nilai HasLUAShield mengontrol apakah perisai Kontrol Akun Pengguna (UAC) ditampilkan.
Dalam contoh ini, nilai DefaultAppliesTo menjadikan kata kerja ini default untuk file apa pun dengan kata "exampleText1" dalam nama filenya. Nilai TerapkanKe memungkinkan kata kerja untuk file apa pun dengan "exampleText1" dalam nama. Nilai HasLUAShield menampilkan perisai untuk file dengan "exampleText2" dalam nama.
HKEY_CLASSES_ROOT
txtile
shell
test.verb
DefaultAppliesTo = System.ItemName:"exampleText1"
HasLUAShield = System.ItemName:"exampleText2"
AppliesTo = System.ItemName:"exampleText1"
Tambahkan subkuntah Perintah, dan nilai:
HKEY_CLASSES_ROOT
txtile
shell
test.verb
Command
(Default) = %SystemRoot%\system32\notepad.exe %1
Di registri Windows 7, lihat drive HKEY_CLASSES_ROOT\sebagai contoh kata kerja bitlocker yang menggunakan pendekatan berikut:
- AppliesTo = System.Volume.BitlockerProtection:=2
- System.Volume.BitlockerRequiresAdmin:=System.StructuredQueryType.Boolean#True
Untuk informasi selengkapnya tentang AQS, lihat Sintaks Kueri Tingkat Lanjut.
Tidak digunakan lagi: Mengaitkan Kata Kerja dengan Perintah Pertukaran Data Dinamis
DDE tidak digunakan lagi; gunakan IDropTarget sebagai gantinya. DDE tidak digunakan lagi karena bergantung pada pesan jendela siaran untuk menemukan server DDE. Server DDE menggantung menggantung pesan jendela siaran dan dengan demikian menggantung percakapan DDE untuk aplikasi lain. Adalah umum bagi satu aplikasi yang macet untuk menyebabkan hang berikutnya di seluruh pengalaman pengguna.
Metode IDropTarget lebih kuat dan memiliki dukungan aktivasi yang lebih baik karena menggunakan aktivasi COM dari handler. Dalam kasus pemilihan beberapa item, IDropTarget tidak tunduk pada pembatasan ukuran buffer yang ditemukan di DDE dan CreateProcess. Selain itu, item diteruskan ke aplikasi sebagai objek data yang dapat dikonversi ke array item dengan menggunakan fungsi SHCreateShellItemArrayFromDataObject. Melakukannya lebih sederhana, dan tidak kehilangan informasi namespace seperti yang terjadi ketika item dikonversi ke jalur untuk protokol baris perintah atau DDE.
Untuk informasi selengkapnya tentang kueri IDropTarget dan Shell untuk atribut asosiasi file, lihat Jenis yang Dirasakan dan Pendaftaran Aplikasi.
Menyelesaikan Tugas Implementasi Kata Kerja
Tugas-tugas berikut untuk menerapkan kata kerja relevan dengan implementasi kata kerja statis dan dinamis. Untuk informasi selengkapnya tentang kata kerja dinamis, lihat Menyesuaikan Menu Pintasan Menggunakan Kata Kerja Dinamis.
Menyesuaikan Menu Pintasan untuk Objek Shell yang Telah Ditentukan Sebelumnya
Banyak objek Shell yang telah ditentukan sebelumnya memiliki menu pintasan yang dapat disesuaikan. Daftarkan perintah dengan cara yang sama seperti Anda mendaftarkan jenis file umum, tetapi gunakan nama objek yang telah ditentukan sebelumnya sebagai nama jenis file.
Daftar objek yang telah ditentukan sebelumnya ada di bagian Objek Shell yang telah ditentukan sebelumnya dari Membuat Penangan Ekstensi Shell. Objek Shell yang telah ditentukan sebelumnya yang menu pintasannya dapat disesuaikan dengan menambahkan kata kerja dalam registri ditandai dalam tabel dengan kata Kata Kerja.
Memperluas Submenu Baru
Saat pengguna membuka menu File di Windows Explorer, salah satu perintah yang ditampilkan adalah Baru. Memilih perintah ini menampilkan submenu. Secara default, submenu berisi dua perintah, Folder dan Pintasan, yang memungkinkan pengguna membuat subfolder dan pintasan. Submenu ini dapat diperluas untuk menyertakan perintah pembuatan file untuk jenis file apa pun.
Untuk menambahkan perintah pembuatan file ke submenu Baru , file aplikasi Anda harus memiliki jenis file terkait. Sertakan subkey ShellNew di bawah nama file. Saat perintah Baru menu File dipilih, Shell menambahkan jenis file ke submenu Baru. String tampilan perintah adalah string deskriptif yang ditetapkan ke ProgID program.
Untuk menentukan metode pembuatan file, tetapkan satu atau beberapa nilai data ke subkunci ShellNew . Nilai yang tersedia tercantum dalam tabel berikut ini.
Nilai subkey ShellNew | Deskripsi |
---|---|
Perintah | Menjalankan aplikasi. Nilai REG_SZ ini menentukan jalur aplikasi yang akan dijalankan. Misalnya, Anda dapat mengaturnya untuk meluncurkan wizard. |
Data | Membuat file yang berisi data tertentu. Nilai REG_BINARY ini menentukan data file. Data diabaikan jika NullFile atau FileName ditentukan. |
FileName | Membuat file yang merupakan salinan file tertentu. Nilai REG_SZ ini menentukan jalur file yang sepenuhnya memenuhi syarat untuk disalin. |
NullFile | Membuat file kosong. NullFile tidak memiliki nilai yang ditetapkan. Jika NullFile ditentukan, nilai registri Data dan FileName diabaikan. |
Contoh kunci registri dan cuplikan layar berikut mengilustrasikan submenu Baru untuk jenis file .myp-ms. Ini memiliki perintah, Aplikasi MyProgram.
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
MyProgram.1
ShellNew
NullFile
Cuplikan layar mengilustrasikan submenu Baru . Saat pengguna memilih Aplikasi MyProgram dari submenu Baru , Shell membuat file bernama New MyProgram Application.myp-ms dan meneruskannya ke MyProgram.exe.
Membuat Handler Seret dan Letakkan
Prosedur dasar untuk mengimplementasikan handler seret dan letakkan sama dengan untuk penangan menu pintasan konvensional. Namun, penangan menu pintasan biasanya hanya menggunakan penunjuk IDataObject yang diteruskan ke metode IShellExtInit::Initialize handler untuk mengekstrak nama objek. Handler seret dan letakkan dapat mengimplementasikan handler data yang lebih canggih untuk mengubah perilaku objek yang diseret.
Saat pengguna mengklik kanan objek Shell untuk menyeret objek, menu pintasan ditampilkan saat pengguna mencoba menghilangkan objek. Cuplikan layar berikut mengilustrasikan menu pintasan seret dan letakkan yang khas.
Handler seret dan letakkan adalah penangan menu pintasan yang dapat menambahkan item ke menu pintasan ini. Handler seret dan letakkan biasanya didaftarkan di bawah subkunji berikut.
HKEY_CLASSES_ROOT
Directory
shellex
DragDropHandlers
Tambahkan subkunci di bawah subkunci DragDropHandlers bernama untuk handler seret dan letakkan, dan atur nilai default subkunci ke bentuk string GUID pengidentifikasi kelas handler (CLSID). Contoh berikut mengaktifkan handler seret dan letakkan MyDD .
HKEY_CLASSES_ROOT
Directory
shellex
DragDropHandlers
MyDD
(Default) = {MyDD CLSID GUID}
Menekan Kata Kerja dan Mengontrol Visibilitas
Anda dapat menggunakan pengaturan kebijakan Windows untuk mengontrol visibilitas kata kerja. Kata kerja dapat ditekan melalui pengaturan kebijakan dengan menambahkan nilai SuppressionPolicy , atau nilai GUID SuppressionPolicyEx ke subkunjung registri kata kerja. Atur nilai subkunjung SuppressionPolicy ke ID kebijakan. Jika kebijakan diaktifkan, kata kerja dan entri menu pintasan terkait ditekan. Untuk kemungkinan nilai ID kebijakan, lihat enumerasi PEMBATASAN.
Menggunakan Model Pemilihan Kata Kerja
Nilai registri harus diatur untuk kata kerja untuk menangani situasi di mana pengguna dapat memilih satu item, beberapa item, atau pilihan dari item. Kata kerja memerlukan nilai registri terpisah untuk masing-masing dari ketiga situasi yang didukung kata kerja. Nilai yang mungkin untuk model pemilihan kata kerja adalah sebagai berikut:
- Tentukan nilai MultiSelectModel untuk semua kata kerja. Jika nilai MultiSelectModel tidak ditentukan, nilai tersebut disimpulkan dari jenis implementasi kata kerja yang telah Anda pilih. Untuk metode berbasis COM (seperti DropTarget dan ExecuteCommand) Pemutar diasumsikan, dan untuk metode lain Dokumen diasumsikan.
- Tentukan Tunggal untuk kata kerja yang hanya mendukung satu pilihan.
- Tentukan Pemutar untuk kata kerja yang mendukung sejumlah item.
- Tentukan Dokumen untuk kata kerja yang membuat jendela tingkat atas untuk setiap item. Melakukannya membatasi jumlah item yang diaktifkan dan membantu menghindari kehabisan sumber daya sistem jika pengguna membuka terlalu banyak jendela.
Ketika jumlah item yang dipilih tidak cocok dengan model pemilihan kata kerja atau lebih besar dari batas default yang diuraikan dalam tabel berikut, kata kerja gagal muncul.
Jenis implementasi kata kerja | Dokumen | Pemutar |
---|---|---|
Warisan | 15 item | 100 item |
COM | 15 item | Tidak ada batasan |
Berikut ini adalah contoh entri registri menggunakan nilai MultiSelectModel.
HKEY_CLASSES_ROOT
Folder
shell
open
= MultiSelectModel = Document
HKEY_CLASSES_ROOT
ProgID
shell
verb
= MultiSelectModel = Single | Document | Player
Menggunakan Atribut Item
Nilai bendera SFGAO dari atribut Shell untuk item dapat diuji untuk menentukan apakah kata kerja harus diaktifkan atau dinonaktifkan.
Untuk menggunakan fitur atribut ini, tambahkan nilai REG_DWORD berikut ini di bawah kata kerja:
- Nilai AttributeMask menentukan nilai SFGAO dari nilai bit mask untuk diuji.
- Nilai AttributeValue menentukan nilai SFGAO dari bit yang diuji.
- ImpliedSelectionModel menentukan nol untuk kata kerja item, atau bukan nol untuk kata kerja pada menu pintasan latar belakang.
Dalam contoh entri registri berikut, AttributeMask diatur ke SFGAO_READONLY (0x40000).
HKEY_CLASSES_ROOT
txtfile
Shell
test.verb2
AttributeMask = 0x40000
AttributeValue = 0x0
ImpliedSelectionModel = 0x0
command
(Default) = %SystemRoot%\system32\notepad.exe %1
Menerapkan Kata Kerja Kustom untuk Folder melalui Desktop.ini
Di Windows 7 dan yang lebih baru, Anda dapat menambahkan kata kerja ke folder melalui Desktop.ini. Untuk informasi selengkapnya tentang file Desktop.ini, lihat Cara Menyesuaikan Folder dengan Desktop.ini.
Catatan
Desktop.ini file harus selalu ditandai Sistem + Tersembunyi sehingga tidak akan ditampilkan kepada pengguna.
Untuk menambahkan kata kerja kustom untuk folder melalui file Desktop.ini, lakukan langkah-langkah berikut:
Buat folder yang ditandai Baca-saja atau Sistem.
Buat file Desktop.ini yang menyertakan [. ShellClassInfo] DirectoryClass=Folder ProgID.
Di registri, buat HKEY_CLASSES_ROOT\Folder ProgID dengan nilai CanUseForDirectory. Nilai CanUseForDirectory menghindari penyalahgunaan ProgID yang diatur untuk tidak berpartisipasi dalam menerapkan kata kerja kustom untuk folder melalui Desktop.ini.
Tambahkan kata kerja di bawah subkunjen FolderProgID, misalnya:
HKEY_CLASSES_ROOT CustomFolderType Shell MyVerb command (Default) = %SystemRoot%\system32\notepad.exe %1\desktop.ini
Catatan
Kata kerja ini dapat menjadi kata kerja default, dalam hal ini mengklik ganda folder mengaktifkan kata kerja.
Topik terkait
-
Praktik Terbaik untuk Penangan Menu Pintasan dan Beberapa Kata Kerja Pilihan
-
Memilih Kata Kerja Statis atau Dinamis untuk Menu Pintasan Anda