Membuat Penangan Menu Pintasan

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

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.
Print 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:

  1. Bawaan verb
  2. Yang pertama verb dalam registri, jika urutan verb ditentukan
  3. Si Openverb
  4. 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.

cuplikan layar dari menu pintasan 'do it 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:

  1. Tampilan
  2. Perangkat elektronik
  3. Personalisasi
HKEY_CLASSES_ROOT
   DesktopBackground
      Shell
         Display
         Gadgets
         Personalization

Demikian pula, entri registri berikut menghasilkan kata kerja menu pintasan dalam urutan berikut:

  1. Personalisasi
  2. Perangkat elektronik
  3. 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.

cuplikan layar memperlihatkan contoh menu bertingkat

Pada Windows 7 dan versi setelahnya, ada tiga cara untuk membuat menu bertingkat.

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

  1. 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)
    
  2. 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
    
  3. Ke 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.paste
    
  4. Dalam 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.

cuplikan layar memperlihatkan menu bertingkat yang diperluas untuk perangkat

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

  1. 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)
    
  2. 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 2
    
  3. 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 dari subkunci Test Cascade Menu 2 adalah kosong serta ditampilkan sebagai (nilai tidak diatur).

  4. 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.

cuplikan layar memperlihatkan contoh menu bertingkat yang memperlihatkan pilihan notepad dan wordpad

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 yang memperlihatkan contoh menu cascading di folder perangkat.

Cuplikan layar berikut mengilustrasikan implementasi lain dari menu bertingkat di folder Perangkat .

cuplikan layar memperlihatkan contoh 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.

cuplikan layar penjelajah windows memperlihatkan perintah

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.

cuplikan layar menu pintasan tarik dan lepas

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:

  1. Buat folder yang ditandai Baca-saja atau Sistem.

  2. Buat file Desktop.ini yang menyertakan [. ShellClassInfo] DirectoryClass=Folder ProgID.

  3. 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.

  4. 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.

 

Praktik Terbaik untuk Penangan Menu Pintasan dan Beberapa Kata Kerja Pilihan

Memilih Statis atau Dinamis Verb untuk Menu Pintasan Anda

Menyesuaikan Menu Pintasan Menggunakan Kata Kerja Dinamis

Menu Pintasan (Konteks) dan Pengelola Menu Pintasan

Kata kerja dan Asosiasi File

Referensi Menu Pintasan