Hoe maak je Drop Handlers?
Bestanden zijn standaard geen dropdoelen. Je kunt leden van een bestandstype tot drop targets maken door een drop handlerte implementeren en te registreren.
Als een drop-handler is geregistreerd voor een bestandstype, wordt deze aangeroepen wanneer een object wordt gesleept of neergezet op een bestand van dat type. De Shell beheert de bewerking door de juiste methoden aan te roepen op de IDropTarget interface van de handler.
De algemene procedures voor het implementeren en registreren van een Shell-extensie-handler worden besproken in Shell Extension Handlers maken. Dit document richt zich op die aspecten van de implementatie die specifiek zijn voor drop handlers.
Aanwijzingen
Stap 1: Drop Handlers implementeren
Zoals alle Shell-extensiehandlers zijn drop-handlers COM-objecten (Component Object Model) die als DLL's zijn geïmplementeerd. Ze exporteren twee interfaces naast IUnknown-: IPersistFile en IDropTarget-.
De Shell initialiseert de handler via de IPersistFile interface. Het gebruikt deze interface om de klasse-id (CLSID) van de handler op te vragen en de bestandsnaam door te geven. Zie Shell-extensiehandlers makenvoor een algemeen overzicht van hoe Shell-extensiehandlers geïmplementeerd kunnen worden, inclusief de IPersistFile interface.
Zodra de drop-handler is geïnitialiseerd, roept shell de juiste methode aan op de IDropTarget-interface van de handler.
Stap 2: Drop-handlers registreren
Drop handlers worden geregistreerd onder de subsleutel van dit bestandstype.
HKEY_CLASSES_ROOT
ProgID
shellex
DropHandler
Maak een subsleutel van DropHandler- met de naam van de handler en stel de standaardwaarde van de subsleutel in op de tekenreeksvorm van de CLSID-GUID van de handler. Zie Shell-extensiehandlers makenvoor een algemene bespreking over hoe Shell-extensiehandlers geregistreerd kunnen worden.
In het volgende voorbeeld ziet u registervermeldingen die een drop-handler inschakelen voor een voorbeeld van een MYP-bestandstype.
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
DropHandler
(Default) = {00000000-1111-2222-3333-444444444444}
Verwante onderwerpen