Choix d’une méthode de menu contextuel statique ou dynamique
Cette rubrique est organisée comme suit :
- Choisir une méthode Verb
- Étendre un menu contextuel
- Prise en charge des méthodes verb par système d’exploitation
- Rubriques connexes
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 :
|
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 |
Rubriques connexes
-
Meilleures pratiques pour les gestionnaires de menus contextuels et les verbes de sélection multiple
-
Personnalisation d’un menu contextuel à l’aide de verbes dynamiques
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour