Choix d’une méthode de menu contextuel statique ou dynamique

Cette rubrique est organisée comme suit :

Choisir une méthode Verb

Il est vivement recommandé d’implémenter un menu contextuel à l’aide de l’une des méthodes de verbe statique.

Méthodes verb statiques

Les verbes statiques sont les verbes les plus simples à implémenter, mais ils fournissent toujours des fonctionnalités riches. Choisissez toujours la méthode de menu contextuel la plus simple qui répond à vos besoins.

Verbe statique Description
CreateProcess avec des paramètres de ligne de commande Il s’agit du moyen le plus simple et le plus familier d’implémenter un verbe statique. Un processus est appelé par le biais d’un appel à la fonction CreateProcess avec les fichiers sélectionnés et tous les paramètres facultatifs passés en tant que ligne de commande. Le fichier ou le dossier s’ouvre.
Cette méthode présente les limitations suivantes :
  • La longueur de la ligne de commande est limitée à 2 000 caractères, ce qui limite le nombre d’éléments que le verbe peut gérer.
  • Ne peut être utilisé qu’avec des éléments de système de fichiers.
  • N’active pas la réutilisation d’un processus déjà en cours d’exécution.
  • Nécessite l’installation d’un exécutable pour gérer le verbe.

DropTarget/IDropTarget Une activation de verbe basée sur COM signifie que prend en charge l’activation in-proc ou out-of-proc. DropTarget/IDropTarget prend également en charge la réutilisation d’un gestionnaire déjà en cours d’exécution lorsque l’interface IDropTarget est implémentée par un serveur local. Il exprime également parfaitement les éléments via l’objet de données marshalé et fournit une référence à la chaîne de site d’appel afin que vous puissiez interagir avec l’appelant via QueryService.
Windows 7 et versions ultérieures : IExecuteCommand Méthode d’implémentation la plus directe. Étant donné qu’il s’agit d’une méthode d’appel basée sur COM (comme DropTarget), cette interface prend en charge l’activation in-proc et out-of-proc. Le verbe implémente IExecuteCommand et IObjectWithSelection, et éventuellement IInitializeCommand. Les éléments sont transmis directement en tant que tableau d’éléments Shell et d’autres paramètres de l’appelant sont disponibles pour l’implémentation du verbe, y compris le point d’appel, l’état du clavier, etc.
Windows 7 et versions ultérieures :ExplorerCommand/ IExplorerCommand Permet aux sources de données qui fournissent leurs commandes de module de commande via IExplorerCommandProvider d’utiliser ces commandes comme verbes dans un menu contextuel. Étant donné que cette interface prend uniquement en charge l’activation in-process, elle est recommandée pour les sources de données Shell qui doivent partager l’implémentation entre les commandes et les menus contextuels.

 

Notes

IExplorerCommand est un hybride entre un verbe statique et dynamique. IExplorerCommand a été déclaré dans Windows Vista, mais sa capacité à implémenter un verbe dans un menu contextuel est nouvelle pour Windows 7.

 

Pour plus d’informations sur les requêtes IDropTarget et Shell pour les attributs d’association de fichiers, consultez Types perçus et inscription d’application.

Méthodes de verbe dynamiques préférées

Les méthodes de verbe dynamique suivantes sont recommandées :

Type de verbe Description
Verbe statique (répertorié dans le tableau précédent) + Syntaxe de requête avancée (AQS) Ce choix obtient une visibilité dynamique des verbes.
Windows 7 et versions ultérieures : IExplorerCommand Ce choix permet une implémentation commune des verbes et des commandes d’explorateur qui s’affichent dans le module de commandes dans Windows Explorer.
Windows 7 et versions ultérieures : IExplorerCommandState + verbe statique Ce choix obtient également une visibilité dynamique des verbes. Il s’agit d’un modèle hybride où un gestionnaire in-process simple est utilisé pour calculer si un verbe statique donné doit être displyé. Cela peut être appliqué à toutes les méthodes d’implémentation de verbes statiques pour obtenir un comportement dynamique et réduire l’exposition de la logique in-process. IExplorerCommandState présente l’avantage de s’exécuter sur un thread d’arrière-plan et évite ainsi les blocages de l’interface utilisateur. Il est considérablement plus simple que IContextMenu.

 

Méthodes de verbe dynamique découragées

IContextMenu est la méthode la plus puissante mais aussi la plus compliquée à implémenter. Il est basé sur des objets COM in-process qui s’exécutent sur le thread de l’appelant, qui généralement Windows Explorer mais peut être n’importe quelle application hébergeant les éléments. IContextMenu prend en charge la visibilité des verbes, l’ordre et le dessin personnalisé. Certaines de ces fonctionnalités ont été ajoutées aux fonctionnalités de verbe statique, telles qu’une icône à associer à une commande, et IExplorerCommand pour gérer la visibilité.

Si vous devez étendre le menu contextuel d’un type de fichier en inscrivant un verbe dynamique pour le type de fichier, suivez les instructions fournies dans Personnalisation d’un menu contextuel à l’aide de verbes dynamiques.

Étendre un menu contextuel

Après avoir choisi une méthode de verbe, vous pouvez étendre un menu contextuel pour un type de fichier en inscrivant un verbe statique pour le type de fichier. Pour plus d’informations, consultez Création de gestionnaires de menu contextuel.

Prise en charge des méthodes verb par système d’exploitation

La prise en charge des méthodes d’appel de verbes par système d’exploitation est répertoriée dans le tableau suivant.

Verb, méthode Windows XP Windows Vista Windows 7 et versions ultérieures
CreateProcess X X X
DDE X X X
DropTarget X X X
ExecuteCommand X X
ExplorerCommand X
ExplorerCommandState X

 

Meilleures pratiques pour les gestionnaires de menus contextuels et les verbes de sélection multiple

Création de gestionnaires de menu contextuel

Personnalisation d’un menu contextuel à l’aide de verbes dynamiques

Menus contextuels et gestionnaires de menus contextuels

Informations de référence sur le menu contextuel

Verbes et associations de fichiers