Delen via


Hoe gegevenshandlers maken

Wanneer een bestand naar het klembord wordt gekopieerd of naar het klembord wordt gesleept en verwijderd, maakt de Shell een gegevensobject dat ondersteuning biedt voor diverse standaardindelingen klembordindelingen. Voor bestanden van een specifiek bestandstype kunt u de beschikbare klembordformaten uitbreiden door een data-handler te implementeren en te registreren. Wanneer een bestand van het bestandstype wordt overgedragen, delegeert de Shell aanroepen naar de interface IDataObject van het gegevensobject als een van de aangepaste indelingen wordt gebruikt.

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

Aanwijzingen

Stap 1: Gegevens-handlers implementeren

Net als alle Shell-extensiehandlers zijn gegevenshandlers in-process COM-objecten (Component Object Model) die zijn geïmplementeerd als DLL's. Ze exporteren twee interfaces naast IUnknown-: IPersistFile en IDataObject.

De Shell initialiseert de handler via de IPersistFile interface. Deze interface wordt gebruikt om de klasse-id (CLSID) van de handler aan te vragen en deze te voorzien van de bestandsnaam. Zie Shell-extensiehandlers makenvoor een algemene bespreking over het implementeren van Shell-extensiehandlers, inclusief de IPersistFile interface.

Zodra de gegevenshandler is geïnitialiseerd, delegeert shell aanroepen van het gegevensobject naar de IDataObject interface van de handler als een van de aangepaste indelingen wordt gebruikt.

Stap 2: Gegevenshandlers registreren

Gegevenshandlers worden geregistreerd onder de ProgID subsleutel van het bestandstype, zoals hier wordt weergegeven: HKEY_CLASSES_ROOT\ProgID\shellex\DataHandler-

Maak een subsleutel met de naam voor de handler onder DataHandler- en stel de standaardwaarde van de subsleutel van die handler in op de tekenreeksvorm van de CLSID-GUID van de handler. Voor een algemene bespreking van het registreren van Shell-extensiehandlers, zie Shell-extensiehandlers creëren.

In het volgende voorbeeld ziet u registervermeldingen die een gegevenshandler 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
         DataHandler
            (Default) = {00000000-1111-2222-3333-444444444444}

Shell-extensiehandlers maken

IPersistFile

IDataObject