Erstellen von Datenhandlern

Wenn eine Datei in die Zwischenablage kopiert oder gezogen und gelöscht wird, erstellt die Shell ein Datenobjekt, das eine Vielzahl von Standardformaten der Zwischenablage unterstützt. Bei Dateien mit einem bestimmten Dateityp können Sie die verfügbaren Zwischenablageformate erweitern, indem Sie einen Datenhandler implementieren und registrieren. Wenn eine Datei des Dateityps übertragen wird, delegiert die Shell die IDataObject-Schnittstelle des Datenobjekts an den Datenhandler, wenn eines der benutzerdefinierten Formate verwendet wird.

Die allgemeinen Verfahren zum Implementieren und Registrieren eines Shell-Erweiterungshandlers werden unter Erstellen von Shellerweiterungshandlern erläutert. Dieses Dokument konzentriert sich auf die Aspekte der Implementierung, die für Datenhandler spezifisch sind.

Anweisungen

Schritt 1: Implementieren von Datenhandlern

Wie alle Shell-Erweiterungshandler sind Datenhandler prozessinterne COM-Objekte (Component Object Model), die als DLLs implementiert sind. Zusätzlich zu IUnknown exportieren sie zwei Schnittstellen: IPersistFile und IDataObject.

Die Shell initialisiert den Handler über die IPersistFile-Schnittstelle . Sie verwendet diese Schnittstelle, um den Klassenbezeichner (CLSID) des Handlers anzufordern und stellt ihn mit dem Namen der Datei bereit. Eine allgemeine Erläuterung zum Implementieren von Shell-Erweiterungshandlern, einschließlich der IPersistFile-Schnittstelle , finden Sie unter Erstellen von Shell-Erweiterungshandlern.

Nachdem der Datenhandler initialisiert wurde, delegiert die Shell das Datenobjekt an die IDataObject-Schnittstelle des Handlers, wenn eines der benutzerdefinierten Formate verwendet wird.

Schritt 2: Registrieren von Datenhandlern

Datenhandler werden unter dem ProgID-Unterschlüssel des Dateityps registriert, wie hier gezeigt: HKEY_CLASSES_ROOT\ProgID\shellex\DataHandler

Erstellen Sie einen Unterschlüssel namens für den Handler unter DataHandler , und legen Sie den Standardwert des Unterschlüssels dieses Handlers auf die Zeichenfolgenform der CLSID-GUID des Handlers fest. Eine allgemeine Erläuterung zum Registrieren von Shell-Erweiterungshandlern finden Sie unter Erstellen von Shell-Erweiterungshandlern.

Im folgenden Beispiel werden Registrierungseinträge veranschaulicht, die einen Datenhandler für einen Beispieldateityp ".myp" aktivieren.

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}

Erstellen von Shellerweiterungshandlern

Ipersistfile

Idataobject