Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penangan menu pintasan, juga dikenal sebagai penangan menu konteks atau verb handler, adalah jenis penangan jenis file. Handler ini dapat diimplementasikan dengan cara yang menyebabkan mereka dimuat dalam proses mereka sendiri, dalam proses penjelajah, atau proses pihak ketiga 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 solusi, simpan .exe Anda di jalur yang tidak teralihkan, atau simpan versi stub .exe Anda yang meluncurkan versi asli.
Topik ini diatur sebagai berikut:
- Kata Kerja Kanonis
- Kata Kerja Bentuk Panjang
- 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
- Mengatur Posisi Kata Kerja 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 Verb Tugas Implementasi
- 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. Kanonis verb 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 verb diatur ke Buka pada sistem bahasa Inggris, dan ke padanan Jerman pada sistem Jerman.
| Canonical verb | Deskripsi |
|---|---|
| Open | Membuka file atau folder. |
| Opennew | Membuka file atau folder di jendela baru. |
| Mencetak file. | |
| Printto | Mengizinkan pengguna mencetak file dengan menyeretnya ke objek printer. |
| Explore | Membuka Windows Explorer dengan folder terpilih. |
| Properties | Membuka lembar properti objek. |
Catatan
Printtoverb 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 anggota CMINVOKECOMMANDINFO.lpVerb yang 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 mendefinisikan verb sebagai meluas, tambahkan nilai REG_SZ "meluas" ke subkunji verb. 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 mendefinisikan verb sebagai akses programatis saja, tambahkan nilai REG_SZ ProgrammaticAccessOnly ke subkunci verb. 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 mendefinisikan verb sebagai ekstensi, tambahkan nilai REG_SZ "diperluas" ke verb subkunci. Nilai tidak boleh memiliki data apa pun yang terkait dengannya.
Menyesuaikan Menu Pintasan Menggunakan Kata Kerja Statis
Setelah Memilih Statis atau Dinamis Verb untuk Menu Pintasan, Anda dapat memperluas menu pintasan untuk jenis file dengan mendaftarkan statis verb untuk jenis file. Untuk melakukannya, tambahkan Shell subkey di bawah subkunci untuk ProgID aplikasi yang berasosiasi dengan tipe file. Secara opsional, Anda dapat menentukan nilai default verb untuk jenis file dengan menjadikannya nilai default pada subkunci Shell.
Pengaturan bawaan verb ditampilkan terlebih dahulu pada menu pintasan. Tujuannya adalah menyediakan Shell dengan verb yang dapat digunakan ketika fungsi ShellExecuteEx dipanggil, jika tidak ada verb yang ditentukan. Shell tidak selalu memilih default verb ketika ShellExecuteEx digunakan dengan cara ini.
Shell menggunakan verb pertama yang tersedia dalam urutan berikut:
- Bawaan verb
- Yang pertama verb dalam registri, jika urutan verb ditentukan
- Si Openverb
- Si Open Withverb
Jika tidak ada kata kerja yang tercantum tersedia, operasi gagal.
Buat satu subkunci untuk setiap verb yang ingin Anda tambahkan di bawah subkunci Shell. Masing-masing subkunci ini harus memiliki nilai REG_SZ yang diatur ke verbstring tampilan (string yang dilokalkan). Untuk setiap verb subkunci, buat subkunci perintah dengan nilai default yang diatur ke baris perintah untuk mengaktifkan item. Untuk kata kerja kanonis, seperti Open dan Print, Anda dapat menghilangkan string tampilan karena sistem secara otomatis menampilkan string yang dilokalkan dengan benar. Untuk kata kerja nonkanonis, jika Anda menghilangkan string yang ditampilkan, maka string verb akan ditampilkan.
Dalam contoh registri berikut, perhatikan bahwa:
- Karena Doit bukan verb yang kanonis, Doit diberi nama yang ditampilkan, yang dapat dipilih dengan menekan tombol D.
- Printtoverb tidak muncul pada menu pintasan. Namun, penyertaannya dalam registri memungkinkan pengguna untuk mencetak file dengan menjatuhkannya pada ikon printer.
- Satu subkunci ditampilkan untuk masing-masing verb. %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 Open, Do It, dan Print sebagai kata kerja pada menunya, dengan Do It sebagai default verb.
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 IDropTarget dan kueri 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
- Perangkat elektronik
- Personalisasi
HKEY_CLASSES_ROOT
DesktopBackground
Shell
Display
Gadgets
Personalization
Demikian pula, entri registri berikut menghasilkan kata kerja menu pintasan dalam urutan berikut:
- Personalisasi
- Perangkat elektronik
- Tampilan
HKEY_CLASSES_ROOT
DesktopBackground
Shell = "Personalization,Gadgets"
Display
Penempatan Kata Kerja di Atas atau Bawah Menu
Atribut registri berikut dapat digunakan untuk menempatkan verb 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.
Pada Windows 7 dan versi setelahnya, ada tiga cara untuk membuat menu bertingkat.
- 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 Subkomando
Di Windows 7 dan yang lebih baru, Anda dapat menggunakan entri Sub-Perintah untuk membuat menu berkala dengan menggunakan prosedur berikut.
Untuk membuat menu berjenjang dengan menggunakan entri SubCommands
Buat subkunci di bawah HKEY_CLASSES_ROOT\ProgID\shell untuk mewakili menu bertingkat Anda. Dalam contoh ini, kami memberikan nama cascadeTest pada subkunkey ini. Pastikan bahwa nilai default subkunci CascadeTest kosong, dan ditampilkan sebagai (nilai tidak diatur).
HKEY_CLASSES_ROOT * shell CascadeTest (Default)Ke subkunci CascadeTest Anda, tambahkan sebuah entri MUIVerb dengan tipe 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 MenuKe subkunci CascadeTest Anda, tambahkan entri SubCommands jenis REG_SZ berupa daftar yang dibatasi oleh titik koma dari kata kerja yang akan muncul di menu, dalam urutan kemunculan. 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.pasteDalam kasus kata kerja kustom, terapkan menggunakan salah satu metode implementasi statis verb dan cantumkan di bawah subkey CommandStore seperti yang ditunjukkan dalam contoh ini untuk fiksi verbVerbName:
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 verb nama 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 versi yang lebih baru, Anda dapat menggunakan entri ExtendedSubCommandKey untuk membuat menu bertingkat yang diperluas: menu bertingkat dalam menu bertingkat.
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 HKEY_CURRENT_USER\Software\Classes. Keuntungan utama melakukannya adalah tidak memerlukan izin yang ditingkatkan. 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 cascade dengan menggunakan entri ExtendedSubCommandsKey
Buat subkunci di bawah HKEY_CLASSES_ROOT\ProgID\shell untuk mewakili menu turun Anda. Dalam contoh ini, kami memberikan nama cascadeTest2 pada subkunkey ini. Pastikan bahwa nilai default subkunci CascadeTest kosong, dan ditampilkan sebagai (nilai tidak diatur).
HKEY_CLASSES_ROOT * shell CascadeTest2 (Default)Ke subkunci CascadeTest Anda, tambahkan sebuah entri MUIVerb dengan tipe 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 2Di 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 allPastikan bahwa nilai default dari subkunci Test Cascade Menu 2 adalah kosong serta ditampilkan sebagai (nilai tidak diatur).
Isi subverb menggunakan salah satu implementasi statis verb 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 yang sama verb 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 Shell sumber data 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 verb sedang dibuat instansnya. Sistem ini hanya bekerja dengan properti berkecepatan tinggi. Ini adalah properti yang dilaporkan oleh Shell sumber data sebagai cepat karena 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 verb ditampilkan atau disembunyikan.
- Nilai DefaultAppliesTo menentukan verb mana yang merupakan default.
- Nilai HasLUAShield mengontrol apakah perisai Kontrol Akun Pengguna (UAC) ditampilkan.
Dalam contoh ini, nilai DefaultAppliesTo menjadikan ini verb default untuk file apa pun dengan kata "exampleText1" dalam nama filenya. Nilai TerapkanKe memungkinkan fungsi verb pada setiap file 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 subkunci Perintah, dan sebuah 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:
- BerlakuUntuk = 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 berhenti dan menghentikan pesan jendela siaran, sehingga menghentikan percakapan DDE untuk aplikasi lain. Adalah umum bagi satu aplikasi yang macet untuk menyebabkan macet berikutnya dalam keseluruhan 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 IDropTarget dan kueri Shell untuk atribut asosiasi file, lihat Jenis yang Dirasakan dan Pendaftaran Aplikasi.
Menyelesaikan Verb Tugas Implementasi
Tugas-tugas berikut untuk menerapkan kata kerja relevan dengan implementasi statis dan dinamis verb . Untuk informasi selengkapnya tentang kata kerja dinamis, lihat Menyesuaikan Menu Pintasan Menggunakan Kata Kerja Dinamis.
Mengkustomisasi Menu Pintasan untuk Objek yang Telah Shell Ditentukan Sebelumnya
Banyak objek yang telah Shell 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 yang telah Shell ditentukan sebelumnya dari Membuat Shell Penangan Ekstensi. Objek yang telah Shell ditentukan sebelumnya yang menu pintasannya dapat disesuaikan dengan menambahkan kata kerja di registri ditandai dalam tabel dengan kata Verb.
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 tambahkan jenis file ke submenu Baru. String tampilan perintah adalah string deskriptif yang diberikan kepada ProgID dari program tersebut.
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 Informasi | Membuat file yang berisi data tertentu. Nilai REG_BINARY ini menentukan data file. Data diabaikan jika NullFile atau FileName ditentukan. |
| nama file | 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. Itu 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 pengendali tarik dan lepas sama dengan pengendali menu pintasan konvensional. Namun, penangan menu pintasan biasanya hanya menggunakan penunjuk IDataObject yang diteruskan ke metode IShellExtInit::Initialize untuk mengekstrak nama objek. Pengendali seret-dan-letakkan dapat menggunakan pengelola data yang lebih canggih untuk mengubah perilaku objek yang diseret.
Saat pengguna mengklik Shell kanan objek untuk menyeret objek, menu pintasan ditampilkan saat pengguna mencoba menjatuhkan objek. Cuplikan layar berikut mengilustrasikan menu pintasan drag-and-drop yang khas.
Pengelola tarik dan lepas adalah pengelola menu pintasan yang dapat menambahkan item ke menu pintasan ini. Pengendali seret dan lepas biasanya didaftarkan di bawah subkunci berikut.
HKEY_CLASSES_ROOT
Directory
shellex
DragDropHandlers
Tambahkan subkunci di bawah DragDropHandlers yang dinamai untuk handler seret-dan-letakkan, dan atur nilai default dari subkunci tersebut ke bentuk string GUID pengidentifikasi kelas handler (CLSID). Contoh berikut mengaktifkan pengelola tarik dan lepas 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 verb visibilitas. Kata kerja dapat dibatasi melalui pengaturan kebijakan dengan menambahkan nilai SuppressionPolicy, atau nilai GUID SuppressionPolicyEx ke subkunci registri verb. Atur nilai subkunci SuppressionPolicy menjadi ID kebijakan. Jika kebijakan diaktifkan, verb dan entri menu pintasan terkait dinonaktifkan. Untuk kemungkinan nilai ID kebijakan, lihat enumerasi RESTRIKSI.
Menggunakan Verb Model Seleksi
Nilai registri harus diatur untuk perintah guna menangani situasi di mana pengguna dapat memilih satu item, beberapa item, atau pilihan dari suatu item. verb memerlukan nilai registri terpisah untuk masing-masing dari tiga situasi yang didukung oleh verb. Nilai kemungkinan verb untuk model pilihan adalah sebagai berikut:
- Tentukan nilai MultiSelectModel untuk semua kata kerja. Jika nilai MultiSelectModel tidak ditentukan, nilai tersebut disimpulkan dari jenis verb implementasi 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 verb model pilihan atau lebih besar dari batas default yang diuraikan dalam tabel berikut, verb gagal muncul.
| Jenis verb implementasi | 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 Shell atribut untuk item dapat diuji untuk menentukan apakah verb harus diaktifkan atau dinonaktifkan.
Untuk menggunakan fitur atribut ini, tambahkan nilai REG_DWORD berikut di verbbawah :
- 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 subkunci FolderProgID, misalnya:
HKEY_CLASSES_ROOT CustomFolderType Shell MyVerb command (Default) = %SystemRoot%\system32\notepad.exe %1\desktop.ini
Catatan
Kata kerja ini bisa menjadi verb default, yang berarti mengklik ganda folder akan mengaktifkan verb.
Topik terkait