Cara Membuat Pengelola Data
Saat file disalin ke clipboard atau diseret dan dihilangkan, Shell membuat objek data yang mendukung berbagai format clipboard standar. Untuk file yang berjenis file tertentu, Anda dapat memperluas format clipboard yang tersedia dengan menerapkan dan mendaftarkan handler data . Ketika file dari jenis tersebut ditransfer, Shell mendelegasikan panggilan ke antarmuka IDataObject dari objek data ke penangan data jika salah satu format kustom digunakan.
Prosedur umum untuk menerapkan dan mendaftarkan penangan ekstensi Shell dibahas pada Membuat Penangan Ekstensi Shell. Dokumen ini berfokus pada aspek implementasi yang khusus untuk 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 selainIUnknown: IPersistFile dan IDataObject.
Shell menginisialisasi handler melalui antarmuka IPersistFile. Ini menggunakan antarmuka tersebut untuk meminta pengidentifikasi kelas (CLSID) dari handler dan memberikannya nama file tersebut. Untuk diskusi umum tentang cara menerapkan handler ekstensi Shell, termasuk antarmuka IPersistFile, lihat Membuat Handler Ekstensi Shell.
Setelah handler data diinisialisasi, Shell mendelegasikan panggilan dari objek data ke antarmukaIDataObjecthandler jika salah satu format kustom digunakan.
Pengelola data terdaftar di bawah subkunci 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 dari GUID CLSID handler. Untuk diskusi umum tentang cara mendaftarkan pengendali ekstensi Shell, lihat Membuat Pengendali Ekstensi Shell.
Contoh berikut mengilustrasikan entri registri yang mengaktifkan penangan data untuk contoh 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}