Partager via


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 fortement recommandé d’implémenter un menu contextuel à l’aide de l’une des méthodes de verbe statique.

Méthodes de verbe statique

Les verbes statiques sont les verbes les plus simples à implémenter, mais ils fournissent toujours des fonctionnalités enrichies. 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. Cela ouvre le fichier ou le dossier.
Cette méthode présente les limitations suivantes :
  • La longueur de 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.
  • Exige qu’un exécutable soit installé pour gérer le verbe.

DropTarget/IDropTarget Une activation détaillée basée sur COM signifie qu’elle 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 appelante 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. Comme il s’agit d’une méthode d’appel 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 plus de paramètres de l’appelant sont disponibles pour l’implémentation de 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, il est recommandé d’utiliser des sources de données Shell qui doivent partager l’implémentation entre les commandes et les menus contextuels.

 

Remarque

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 dynamique préférées

Les méthodes de verbe dynamique suivantes sont préféré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é détaillée dynamique.
Windows 7 et versions ultérieures : IExplorerCommand Ce choix permet une implémentation courante de verbes et de commandes d’explorateur affichés dans le module de commandes dans l’Explorateur Windows.
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 affiché. 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 le blocage de l’interface utilisateur. Il est considérablement plus simple que IContextMenu.

 

Méthodes dynamiques déconseillées

IContextMenu est la méthode la plus puissante, mais aussi la plus complexe à 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 l’Explorateur Windows, 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 caractéristiques 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 La 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 menus contextuels.

Prise en charge des méthodes détaillées 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 au-delà
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