Guide pratique pour créer des gestionnaires de données

Lorsqu’un fichier est copié dans le Presse-papiers ou déplacé et déplacé, l’interpréteur de commandes crée un objet de données qui prend en charge divers formats de Presse-papiers standard. Pour les fichiers d’un type de fichier spécifique, vous pouvez étendre les formats disponibles du Presse-papiers 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 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 Shell sont décrites dans Création de gestionnaires d’extensions Shell. Ce document se concentre sur les aspects de l’implémentation spécifiques aux gestionnaires de données.

Instructions

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

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

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

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 inscrits sous la sous-clé ProgID du type de fichier, comme illustré ici : HKEY_CLASSES_ROOT\Shellex\DataHandlerProgID\

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 une présentation générale de l’inscription des gestionnaires d’extensions Shell, consultez Création de gestionnaires d’extensions 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