Partager via


Ajout d’icônes et de menus contextuels avec des extensions d’interpréteur de commandes

Notes

Windows Desktop Search 2.x est une technologie obsolète qui était initialement disponible en tant que complément pour Windows XP et Windows Server 2003. Sur les versions ultérieures, utilisez plutôt Recherche Windows .

Vous pouvez améliorer l’expérience de vos utilisateurs avec Recherche de bureau Microsoft Windows (WDS) et votre gestionnaire de protocole en implémentant des extensions Shell. Sans extension supplémentaire, le gestionnaire de protocole que vous créez n’inclut pas les expériences utilisateur suivantes :

  • WDS n’affiche pas d’icônes spécifiques pour vos résultats.
  • Lorsque les utilisateurs double-cliquent sur un élément, l’interface utilisateur ne répond pas à l’événement.
  • Lorsque les utilisateurs cliquent avec le bouton droit sur un élément, le menu contextuel ne prend pas en charge les opérations pour l’élément.

Les implémentations minimales d’IPersist et d’IPersistFolder sont requises par IShellFolder, et une implémentation minimale d’IShellFolder est requise pour IContextMenu et IExtractIcon, les deux interfaces qui fournissent une expérience utilisateur plus fluide.

 

Ipersist

L’interface IPersist définit la méthode unique GetClassID, qui est conçue pour fournir le CLSID d’un objet qui peut être stocké de manière permanente dans le système.

Méthode Description
GetClassID() Retourne le ClassID du gestionnaire de protocole.

 

Notes

Le même CLSID doit être implémenté pour IPersist, IPersistFolder et IShellFolder.

 

 

IPersistFolder

L’interface IPersistFolder est utilisée pour initialiser des objets de dossier Shell. L’implémentation de cette interface, qui est dérivée d’IPersist, est la façon dont le dossier est indiqué où il se trouve dans l’espace de noms Shell.

Méthode Description
Initialize() Demande à un objet de dossier Shell de s’initialiser en fonction des informations transmises et retourne S_OK

 

Notes

Le même CLSID doit être implémenté pour IPersist, IPersistFolder et IShellFolder.

 

Vous n’utilisez pas cette interface directement. Il est utilisé par l’implémentation du système de fichiers de l’interface IShellFolder::BindToObject lorsqu’elle initialise un objet de dossier Shell.

 

IShellFolder

L’interface IShellFolder est utilisée pour gérer les dossiers, et une implémentation partielle est requise pour que l’icône et les interfaces de contexte implémentées pour un gestionnaire de protocole se comportent correctement dans l’interface utilisateur des résultats de la Recherche sur le bureau Windows. La plupart des fonctionnalités requises sont exposées via la méthode GetUIObjectOf . Cette méthode permet à un complément d’interroger les interfaces IExtractIcon et IContextMenu .

L’interface IShellFolder utilise des PIDLs au lieu d’URL. Contrairement aux exigences d’une extension d’espace de noms complète, les compléments peuvent utiliser une structure IDL simple qui contient uniquement l’URL.

Les méthodes suivantes d’IShellFolder doivent être implémentées. Notez que cinq de ces méthodes nécessitent une implémentation minimale.

Méthode Description
BindToObject() Retourne E_NOTIMPL
BindToStorage() Retourne E_NOTIMPL
CreateViewObject() Retourne E_NOTIMPL
SetNameOf() Retourne E_NOTIMPL
ParseDisplayName() Convertit une URL en structure PIDL
CompareIDs() Compare deux valeurs PIDL
GetDisplayNameOf() Retourne l’URL d’un PIDL
GetUIObjectOf() Cette méthode est similaire à la méthode OLE COM QueryInterface. Si une icône est demandée, l’appelant demande le IID_IExtractIcon ; si un menu contextuel est demandé, l’appelant demande le IID_IContextMenu.

 

Notes

Le même CLSID doit être implémenté pour IPersist, IPersistFolder et IShellFolder.

 

IShellFolder n’est pas utilisé pour énumérer les dossiers. Cela signifie que le nom d’affichage d’un dossier sera l’URL physique. Cela peut changer à l’avenir.

 

IContextMenu

Lorsque WDS affiche des résultats à l’utilisateur, l’utilisateur peut cliquer avec le bouton droit sur un élément et voir un menu contextuel défini par votre interface IContextMenu .

L’action par défaut dans le menu contextuel est la même action effectuée lorsque l’élément est double-cliqué. Sans les interfaces IShellFolder ou IContextMenu correspondantes pour l’élément, le comportement par défaut d’un événement de double-clic consiste à passer l’URL en tant qu’argument à la fonction ShellExecute.

 

IExtractIcon

IExtractIcon récupère une icône pour l’interface utilisateur WDS en fonction de l’URL dans le PIDL fourni par votre gestionnaire de protocole.

 

Exemple de code

L’exemple de code d’interface utilisateur du gestionnaire de protocole personnalisé illustre une implémentation d’IShellFolder et d’interfaces de prise en charge, et inclut la prise en charge de la manipulation des PIDL.

Informations de référence

Exemple de code d’interface utilisateur du gestionnaire de protocole personnalisé

Installation et inscription de gestionnaires de protocole