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}
Temas relacionados