Condividi tramite


Come creare gestori di rilascio

Per impostazione predefinita, i file non sono destinazioni di rilascio. È possibile rendere i membri di un tipo di file in destinazioni di rilascio implementando e registrando un gestore di rilascio .

Se un handler di rilascio è registrato per un tipo di file, viene attivato ogni volta che un oggetto viene trascinato sopra o rilasciato su un membro del tipo di file. Shell gestisce l'operazione chiamando i metodi appropriati nell'interfaccia di IDropTarget del gestore.

Le procedure generali per l'implementazione e la registrazione di un gestore di estensioni shell sono descritte in Creazione di gestori dell'estensione shell. Questo documento è incentrato su questi aspetti dell'implementazione specifici dei gestori di rilascio.

Disposizioni

Passaggio 1: Implementare i gestori di rilascio

Come tutte le estensioni della shell, i gestori di rilascio sono oggetti COM (Component Object Model) in-process implementati come DLL. Esportano due interfacce oltre a IUnknown: IPersistFile e IDropTarget.

Shell inizializza il gestore tramite l'interfaccia IPersistFile. Usa questa interfaccia per richiedere l'identificatore di classe (CLSID) del gestore e lo fornisce con il nome del file. Per una discussione generale su come implementare i gestori di estensione shell, inclusa l'interfaccia IPersistFile, vedere Creating Shell Extension Handlers.

Dopo aver inizializzato il gestore di rilascio, Shell chiama il metodo appropriato nell'interfaccia IDropTarget del gestore.

Passaggio 2: Registrazione dei gestori di rilascio

I gestori di drop vengono registrati nella sottochiave di questo tipo di file.

HKEY_CLASSES_ROOT
   ProgID
      shellex
         DropHandler

Creare una sottochiave di DropHandler denominata per il gestore e impostare il valore predefinito della sottochiave sul formato stringa del GUID CLSID del gestore. Per una discussione generale su come registrare i gestori di estensione shell, vedere Creazione di gestori estensione shell.

Nell'esempio seguente vengono illustrate le voci del Registro di sistema che abilitano un gestore di rilascio 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
         DropHandler
            (Default) = {00000000-1111-2222-3333-444444444444}

Creazione di Gestori di Estensioni Shell

IDropTarget

IPersistFile