Cara Membuat Handler Copy Hook

Prosedur umum untuk menerapkan dan mendaftarkan handler ekstensi Shell dibahas dalam Membuat Handler Ekstensi Shell. Dokumen ini berfokus pada aspek implementasi yang khusus untuk menyalin penangan kait.

Petunjuk

Langkah 1: Menerapkan Handler Copy Hook

Seperti semua handler ekstensi Shell, handler hook salin adalah objek Component Object Model (COM) dalam proses yang diimplementasikan sebagai DLL. Mereka mengekspor satu antarmuka selain IUnknown: ICopyHook. Shell menginisialisasi handler secara langsung, sehingga tidak perlu antarmuka inisialisasi seperti IShellExtInit.

Antarmuka ICopyHook memiliki satu metode, ICopyHook::CopyCallback. Ketika folder akan dipindahkan, Shell memanggil metode ini. Ini meneruskan berbagai informasi, termasuk:

  • Nama folder.
  • Tujuan folder atau nama baru.
  • Operasi yang sedang dicoba.
  • Atribut folder sumber dan tujuan.
  • Handel jendela yang dapat digunakan untuk menampilkan antarmuka pengguna.

Saat metode ICopyHook::CopyCallback handler Anda dipanggil, metode ini mengembalikan salah satu dari tiga nilai berikut untuk menunjukkan kepada Shell bagaimana seharusnya dilanjutkan.

Nilai Deskripsi
IDYES Memungkinkan operasi.
IDNO Mencegah operasi pada folder ini. Shell dapat dilanjutkan dengan operasi lain yang telah disetujui, seperti operasi salinan batch.
IDCANCEL Mencegah operasi saat ini dan membatalkan operasi yang tertunda.

 

Langkah 2: Mendaftarkan Handler Copy Hook

Handler hook salin untuk folder terdaftar di bawah subkunci HKEY_CLASSES_ROOT\Directory\shellex\CopyHookHandlers . Buat subkunci CopyHookHandlers bernama untuk handler, dan atur nilai default subkunci ke bentuk string GUID pengidentifikasi kelas handler (CLSID).

Contoh berikut menambahkan subkuntah MyCopyHandler ke daftar handler hook salinan Shell.

HKEY_CLASSES_ROOT
   Directory
      shellex
         CopyHookHandlers
            MyCopyHandler
               (Default) = {MyCopyHandler CLSID GUID}

Handler kait salin untuk objek printer pada dasarnya terdaftar dengan cara yang sama. Satu-satunya perbedaan adalah Anda harus mendaftarkannya di bawahsubkunjud PrinterHKEY_CLASSES_ROOT\.

Keterangan

Biasanya, pengguna dan aplikasi dapat menyalin, memindahkan, menghapus, atau mengganti nama folder dengan beberapa batasan. Dengan menerapkan handler kait salinan, Anda dapat mengontrol apakah operasi ini berlangsung. Misalnya, menerapkan handler seperti itu memungkinkan Anda mencegah folder penting diganti namanya atau dihapus. Handler kait salin juga dapat diimplementasikan untuk objek printer.

Handler kait salin bersifat global. Shell memanggil semua penangan terdaftar setiap kali aplikasi atau pengguna mencoba menyalin, memindahkan, menghapus, atau mengganti nama folder atau objek printer. Handler tidak melakukan operasi itu sendiri. Ini hanya menyetujui atau memvetonya. Jika semua penangan menyetujui, Shell melakukan operasi. Jika ada handler yang mem-veto operasi, operasi dibatalkan dan penangan yang tersisa tidak dipanggil. Handler kait salin tidak diberitahu tentang keberhasilan atau kegagalan operasi, sehingga tidak dapat digunakan untuk memantau operasi file.

Membuat Handler Ekstensi Shell

ICopyHook