Bagikan melalui


Cara Membuat Penangan Data

Saat file disalin ke clipboard atau diseret dan dijatuhkan, Shell membuat objek data yang mendukung berbagai format clipboard standar. Untuk file dengan jenis file tertentu, Anda dapat memperluas format clipboard yang tersedia dengan menerapkan dan mendaftarkan penangan data. Saat file jenis file ditransfer, Shell mendelegasikan panggilan ke antarmuka IDataObject objek data ke penangan data jika salah satu format kustom digunakan.

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

Petunjuk

Langkah 1: Menerapkan Penangan Data

Seperti semua penangan ekstensi Shell, penangan data adalah objek Model Objek Komponen (COM) dalam proses yang diimplementasikan sebagai DLL. Mereka mengekspor dua antarmuka selain IUnknown: IPersistFile dan IDataObject.

Shell menginisialisasi handler melalui antarmuka IPersistFile-nya . Ini menggunakan antarmuka ini untuk meminta pengidentifikasi kelas handler (CLSID) dan menyediakannya dengan nama file. Untuk diskusi umum tentang cara mengimplementasikan handler ekstensi Shell, termasuk antarmuka IPersistFile , lihat Membuat Penangan Ekstensi Shell.

Setelah handler data diinisialisasi, Shell mendelegasikan panggilan dari objek data ke antarmuka IDataObject handler jika salah satu format kustom digunakan.

Langkah 2: Mendaftarkan Penangan Data

Penangan data terdaftar di bawah subkuntang ProgID jenis file seperti yang ditunjukkan di sini: HKEY_CLASSES_ROOT\ProgID\shellex\DataHandler

Buat subkunci bernama untuk handler di bawah DataHandler dan atur nilai default subkunci handler tersebut ke bentuk string GUID CLSID handler. Untuk diskusi umum tentang cara mendaftarkan penangan ekstensi Shell, lihat Membuat Penangan Ekstensi Shell.

Contoh berikut mengilustrasikan entri registri yang mengaktifkan penangan data misalnya jenis file .myp.

HKEY_CLASSES_ROOT
   .myp
      (Default) = MyProgram.1
   CLSID
      {00000000-1111-2222-3333-444444444444}
         InProcServer32
            (Default) = C:\MyDir\MyCommand.dll
            ThreadingModel = Apartment
   MyProgram.1
      (Default) = MyProgram Application
      Shellex
         DataHandler
            (Default) = {00000000-1111-2222-3333-444444444444}

Membuat Handler Ekstensi Shell

IPersistFile

IDataObject