Gestionnaires de feuilles de propriétés

Lorsqu’un utilisateur clique avec le bouton droit sur un objet Shell, le menu contextuel qui s’affiche inclut normalement un élément Propriétés . La sélection de cet élément lance une feuille de propriétés qui permet à l’utilisateur d’afficher et, dans certains cas, de modifier les propriétés de l’objet. Vous pouvez personnaliser cette feuille de propriétés en implémentant et en inscrivant un gestionnaire de feuille de propriétés.

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 feuilles de propriétés.

Fonctionnement des gestionnaires de feuilles de propriétés

L’illustration suivante montre la feuille de propriétés d’un fichier texte Windows XP.

feuille de propriétés

Cette illustration montre la feuille de propriétés par défaut qui s’affiche pour n’importe quel fichier. Pour de nombreuses feuilles de propriétés de ce type, vous pouvez ajouter une ou plusieurs pages à la feuille de propriétés en implémentant et en inscrivant un gestionnaire de feuilles de propriétés.

Les gestionnaires de feuilles de propriétés sont le plus souvent inscrits pour un type de fichier. Chaque gestionnaire peut ajouter une page personnalisée à la feuille de propriétés de la classe. Ces pages donnent généralement aux utilisateurs l’accès à des propriétés spécifiques au type de fichier particulier. Un type de fichier composé de documents texte peut, pour instance, afficher une page qui répertorie le titre et l’auteur, ainsi qu’un résumé du document. Un cas particulier de ce type de gestionnaire de feuille de propriétés est utilisé pour ajouter une page à la feuille de propriétés d’un lecteur monté.

L’autre utilisation des gestionnaires de feuilles de propriétés consiste à remplacer les pages des feuilles de propriétés affichées par Panneau de configuration applications. Un fabricant de souris, pour instance, peut utiliser un gestionnaire de feuilles de propriétés pour remplacer la page Boutons de la feuille de propriétés Propriétés de la souris du Panneau de configuration par une page personnalisée pour les caractéristiques de sa souris.

Comme tous les gestionnaires d’extensions Shell, les gestionnaires de feuilles de propriétés sont des objets COM (Component Object Model) in-process implémentés en tant que DLL. Ils doivent exporter deux interfaces en plus d’IUnknown : IShellExtInit et IShellPropSheetExt.

L’interface IShellExtInit est utilisée par l’interpréteur de commandes pour initialiser le gestionnaire. Lorsque l’interpréteur de commande appelle IShellExtInit::Initialize, il transmet un objet de données avec le nom de l’objet et le pointeur vers une liste d’identificateur d’élément (PIDL) du dossier qui contient le fichier. Le paramètre hRegKey n’est pas utilisé avec les gestionnaires de feuille de propriétés. La méthode IShellExtInit::Initialize doit extraire le nom de fichier de l’objet de données et stocker le nom et le PIDL du dossier pour une utilisation ultérieure. Pour plus d’informations, consultez la section Implémentation d’IShellExtInit de La création de gestionnaires d’extensions Shell.

Le reste de l’opération s’effectue via l’interface IShellPropSheetExt du gestionnaire. Si la feuille de propriétés est associée à un type de fichier, l’interpréteur de commandes appelle IShellPropSheetExt::AddPages pour permettre au gestionnaire d’ajouter une page à la feuille de propriétés. Si la feuille de propriétés est associée à une application Panneau de configuration, l’interpréteur de commandes appelle IShellPropSheetExt::ReplacePage pour permettre au gestionnaire de remplacer une page.

Inscription et implémentation d’un gestionnaire de feuilles de propriétés pour un lecteur monté

Chaque lecteur monté a une feuille Propriétés qui peut être affichée par l’utilisateur. L’illustration suivante montre une feuille de propriétés pour un lecteur de CD-ROM.

Feuille de propriétés cd-rom

Il existe une grande variété d’appareils qui peuvent être montés en tant que lecteurs. Étant donné que la feuille de propriétés par défaut, conçue pour les lecteurs de disque, peut ne pas être suffisante pour certains appareils, un gestionnaire de feuilles de propriétés peut être implémenté pour ajouter une page spécifique à l’appareil monté. L’implémentation de base de ce type de gestionnaire de feuille de propriétés est identique à celle décrite dans Comment inscrire et implémenter un gestionnaire de feuilles de propriétés pour un type de fichier, à deux exceptions près.

  • L’objet de données passé à la méthode IShellExtInit::Initialize du gestionnaire peut contenir le chemin d’accès du lecteur au format CFSTR_MOUNTEDVOLUME au lieu du format CF_HDROP . Le format CF_HDROP est utilisé lorsque l’appareil est monté sur une lettre de lecteur. Le format CFSTR_MOUNTEDVOLUME est utilisé avec les systèmes de fichiers NTFS lorsque l’appareil distant est monté sur un dossier plutôt que sur une lettre de lecteur.
  • Le GUID du gestionnaire est inscrit sous la clé HKEY_CLASSES_ROOT\Shellex\\PropertySheetHandlers.

Comment inscrire et implémenter un gestionnaire de feuille de propriétés pour un type de fichier

Comment inscrire et implémenter un gestionnaire de feuille de propriétés pour une application Panneau de configuration