Come creare gestori dati

Quando un file viene copiato negli Appunti o trascinato e eliminato, shell crea un oggetto dati che supporta un'ampia gamma di formati degli Appunti standard. Per i file di un tipo di file specifico, è possibile estendere i formati degli Appunti disponibili implementando e registrando un gestore dati. Quando viene trasferito un file del tipo di file, shell delega l'interfaccia IDataObject dell'oggetto dati al gestore dati se viene usato uno dei formati personalizzati.

Le procedure generali per l'implementazione e la registrazione di un gestore di estensioni shell sono illustrate in Creazione di gestori estensioni shell. Questo documento è incentrato sugli aspetti dell'implementazione specifici dei gestori dati.

Istruzioni

Passaggio 1: Implementazione dei gestori dati

Come tutti i gestori di estensioni shell, i gestori dati sono oggetti COM (Component Object Model) in-process implementati come DLL. Esportare due interfacce oltre a IUnknown: IPersistFile e IDataObject.

Shell inizializza il gestore tramite l'interfaccia IPersistFile . Usa questa interfaccia per richiedere l'identificatore della classe del gestore (CLSID) e lo fornisce con il nome del file. Per una discussione generale su come implementare gestori di estensioni shell, tra cui l'interfaccia IPersistFile , vedere Creazione di gestori estensioni shell.

Dopo l'inizializzazione del gestore dati, i delegati shell chiamano dall'oggetto dati all'interfaccia IDataObject del gestore se viene usato uno dei formati personalizzati.

Passaggio 2: Registrazione dei gestori dati

I gestori dati vengono registrati nella sottochiave ProgID del tipo di file, come illustrato di seguito: HKEY_CLASSES_ROOT\Shellex\DataHandlerProgID\

Creare una sottochiave denominata per il gestore in DataHandler e impostare il valore predefinito della sottochiave del gestore sulla forma stringa del GUID CLSID del gestore. Per una discussione generale su come registrare i gestori di estensioni shell, vedere Creazione di gestori estensioni shell.

Nell'esempio seguente vengono illustrate le voci del Registro di sistema che abilitano un gestore dati per un tipo di file .myp di esempio.

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}

Creazione di gestori di estensione della shell

Ipersistfile

Idataobject