Erstellen von Drophandlern

Standardmäßig sind Dateien keine Ablageziele. Sie können die Elemente eines Dateityps zu Ablagezielen machen, indem Sie einen Drophandler implementieren und registrieren.

Wenn ein Drophandler für einen Dateityp registriert ist, wird er aufgerufen, wenn ein Objekt über ein Element des Dateityps gezogen oder abgelegt wird. Die Shell verwaltet den Vorgang, indem sie die entsprechenden Methoden auf der IDropTarget-Schnittstelle des Handlers aufruft.

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 Drophandler spezifisch sind.

Anweisungen

Schritt 1: Implementieren von Drop-Handlern

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

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 Drop-Handler initialisiert wurde, ruft die Shell die entsprechende Methode auf der IDropTarget-Schnittstelle des Handlers auf.

Schritt 2: Registrieren von Drophandlern

Drop-Handler werden unter dem Unterschlüssel dieses Dateityps registriert.

HKEY_CLASSES_ROOT
   ProgID
      shellex
         DropHandler

Erstellen Sie einen Unterschlüssel von DropHandler namens für den Handler, und legen Sie den Standardwert des Unterschlüssels 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 Drophandler 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
         DropHandler
            (Default) = {00000000-1111-2222-3333-444444444444}

Erstellen von Shellerweiterungshandlern

Idroptarget

Ipersistfile