Cómo crear controladores de datos

Cuando se copia un archivo en el Portapapeles o se arrastra y quita, el Shell crea un objeto de datos que admite una variedad de formatos de Portapapeles estándar. Para los archivos que son de un tipo de archivo específico, puede ampliar los formatos de Portapapeles disponibles mediante la implementación y el registro de un controlador de datos. Cuando se transfiere un archivo del tipo de archivo, shell delega las llamadas a la interfaz IDataObject del objeto de datos al controlador de datos si se usa uno de los formatos personalizados.

Los procedimientos generales para implementar y registrar un controlador de extensión de Shell se describen en Creación de controladores de extensión de Shell. Este documento se centra en los aspectos de la implementación específicos de los controladores de datos.

Instrucciones

Paso 1: Implementar controladores de datos

Al igual que todos los controladores de extensiones de Shell, los controladores de datos son objetos del modelo de objetos componentes (COM) en proceso implementados como archivos DLL. Exportan dos interfaces además de IUnknown: IPersistFile e IDataObject.

Shell inicializa el controlador a través de su interfaz IPersistFile . Usa esta interfaz para solicitar el identificador de clase (CLSID) del controlador y le proporciona el nombre del archivo. Para obtener una explicación general de cómo implementar controladores de extensión de Shell, incluida la interfaz IPersistFile , consulte Creating Shell Extension Handlers.

Una vez inicializado el controlador de datos, shell delega las llamadas desde el objeto de datos a la interfaz IDataObject del controlador si se usa uno de los formatos personalizados.

Paso 2: Registrar controladores de datos

Los controladores de datos se registran en la subclave ProgID del tipo de archivo, tal y como se muestra aquí: HKEY_CLASSES_ROOT\shell deProgIDex\\DataHandler

Cree una subclave denominada para el controlador en DataHandler y establezca el valor predeterminado de la subclave del controlador en el formato de cadena del GUID clSID del controlador. Para obtener una explicación general de cómo registrar controladores de extensión de Shell, consulte Creación de controladores de extensión de Shell.

En el ejemplo siguiente se muestran las entradas del Registro que habilitan un controlador de datos para un tipo de archivo .myp de ejemplo.

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}

Creación de controladores de extensiones de shell

IPersistFile

IDataObject