Comment créer des gestionnaires de données

Lorsqu’un fichier est copié dans le presse-papiers ou glissé et déposé, le shell crée un objet de données qui prend en charge un large éventail de formats de presse-papiersstandard. Pour les fichiers qui sont d’un type de fichier spécifique, vous pouvez étendre les formats de presse-papiers disponibles en implémentant et en inscrivant un Gestionnaire de données. Lorsqu’un fichier du type de fichier est transféré, l’interpréteur de commandes délègue les appels à l’interface IDataObject de l’objet de données au gestionnaire de données si l’un des formats personnalisés est utilisé.

Les procédures générales d’implémentation et d’inscription d’un gestionnaire d’extensions de Shell sont décrites dans création de gestionnaires d’extensions de Shell. Ce document se concentre sur les aspects de l’implémentation qui sont spécifiques aux gestionnaires de données.

Instructions

Étape 1 : implémentation des gestionnaires de données

Comme tous les gestionnaires d’extensions de Shell, les gestionnaires de données sont des objets COM (Component Object Model) in-process implémentés en tant que dll. Elles exportent deux interfaces en plus de IUnknown: IPersistFile et IDataObject.

L’interpréteur de commandes Initialise le gestionnaire via son interface IPersistFile . Elle utilise cette interface pour demander l’identificateur de classe du gestionnaire (CLSID) et lui fournit le nom du fichier. Pour obtenir une description générale de l’implémentation des gestionnaires d’extensions de Shell, y compris l’interface IPersistFile , consultez création de gestionnaires d’extension de Shell.

Une fois le gestionnaire de données initialisé, l’interpréteur de commandes délègue les appels de l’objet de données à l’interface IDataObject du gestionnaire si l’un des formats personnalisés est utilisé.

Étape 2 : inscription des gestionnaires de données

Les gestionnaires de données sont enregistrés sous la sous-clé ProgID du type de fichier comme indiqué ici : HKEY _ classes _ root \ ProgID \ shellex \ DataHandler

Créez une sous-clé nommée pour le gestionnaire sous DataHandler et définissez la valeur par défaut de la sous-clé de ce gestionnaire sur la forme de chaîne du GUID CLSID du gestionnaire. Pour obtenir une présentation générale de l’inscription des gestionnaires d’extensions de Shell, consultez création de gestionnaires d’extensions de Shell.

L’exemple suivant illustre les entrées de Registre qui activent un gestionnaire de données pour un exemple de type de fichier. MYP.

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}

Création de gestionnaires d’extensions d’environnement

IPersistFile

IDataObject