Verbes et associations de fichiers

Lorsqu’un utilisateur clique avec le bouton droit sur un objet Shell tel qu’un fichier, l’interpréteur de commandes affiche un menu contextuel. Ce menu contient une liste de commandes que l’utilisateur peut sélectionner pour effectuer différentes actions sur l’élément. Ces commandes sont également appelées éléments de menu contextuel ou verbes. Les menus contextuels peuvent être personnalisés.

Cette rubrique est organisée comme suit :

Présentation des menus contextuels pour les objets de système de fichiers

Étant donné que les menus contextuels sont souvent utilisés pour la gestion des fichiers, l’interpréteur de commandes fournit un ensemble de commandes par défaut, telles que Couper et Copier, qui s’affichent dans le menu contextuel pour tout objet de système de fichiers, tel qu’un fichier ou un dossier.

L’exemple suivant illustre un menu contextuel par défaut qui s’affiche en cliquant avec le bouton droit sur MyFile.xyz-ms.

capture d’écran du menu contextuel par défaut

La raison pour laquelle un menu contextuel par défaut s’affiche pour MyFile.xyz-ms est due au fait que .xyz-ms n’est pas membre d’un type de fichier inscrit. En revanche, .txt est un type de fichier inscrit. Si vous cliquez avec le bouton droit sur un fichier .txt , vous voyez un menu contextuel avec trois commandes supplémentaires dans sa section supérieure : Imprimer, Modifier et Ouvrir avec.

Capture d’écran du menu contextuel d’un fichier avec un type de fichier inscrit

Pour étendre le menu contextuel d’un type de fichier, vous devez créer une entrée de Registre pour chaque commande. Une approche plus sophistiquée consiste à implémenter un gestionnaire de menu contextuel (verbe), qui vous permet d’étendre le menu contextuel pour un type de fichier sur une base fichier par fichier. Pour plus d’informations, consultez Création de gestionnaires de menu contextuel et Référence du menu contextuel.

Ajouter des commandes à un menu contextuel

Un gestionnaire de menus contextuels est un gestionnaire de type de fichier qui ajoute des commandes à un menu contextuel existant. Les gestionnaires de menus contextuels sont associés à un type de fichier et sont appelés chaque fois qu’un menu contextuel s’affiche pour un membre de la classe. L’interpréteur de commandes vérifie le Registre pour voir si le type de fichier est associé à des gestionnaires de menus contextuels. Si c’est le cas, l’interpréteur de commandes interroge les gestionnaires pour obtenir des éléments de menu contextuel supplémentaires.

Verbes du menu contextuel

Chaque commande du menu contextuel est identifiée dans le Registre par son verbe. Ces verbes sont les mêmes que ceux utilisés par ShellExecuteEx lors du lancement d’applications par programmation.

Un verbe est une chaîne de texte simple utilisée par l’interpréteur de commandes pour identifier la commande associée. Chaque verbe correspond à la chaîne de commande utilisée pour lancer la commande dans une fenêtre de console ou un fichier batch (.bat).

Par exemple, le verbe ouvert lance normalement un programme pour ouvrir un fichier. La chaîne de commande se présente généralement comme suit :

"My Program.exe" "%1"

Si un élément de la chaîne de commande contient ou peut contenir des espaces, il doit être placé entre guillemets. Sinon, si l’élément contient un espace, il ne sera pas analysé correctement. Par instance, « Mon Program.exe » démarre correctement l’application. Si vous utilisez My Program.exe sans guillemets, le système tente de lancer My avec Program.exe comme premier argument de ligne de commande. Vous devez toujours utiliser des guillemets avec des arguments tels que « %1 » qui sont développés en chaînes par l’interpréteur de commandes, car vous ne pouvez pas être certain que la chaîne ne contiendra pas d’espace.

Un nom d’affichage peut également être associé aux verbes, qui s’affiche dans le menu contextuel au lieu de la chaîne de verbe elle-même. Par exemple, la chaîne d’affichage pour openas est Open With. Comme les chaînes de menu normales, l’inclusion d’un caractère d’esperluette dans la chaîne d’affichage permet la sélection au clavier de la commande.

Diffusez en continu les éléments du système non-fichier et les résultats OpenSearch.

Dans Windows 7 et versions ultérieures, la connexion de sources externes au client Windows est prise en charge par le protocole OpenSearch . Cela permet aux utilisateurs d’effectuer une recherche dans un magasin de données distant et d’afficher les résultats à partir de Windows Explorer. La norme OpenSearch v1.1 définit des formats de fichier simples qui peuvent être utilisés pour décrire comment un client doit interroger le service web pour le magasin de données et comment le service doit retourner les résultats à rendre par le client.

Vous devrez peut-être diffuser en continu des éléments système autres que des fichiers pour éviter d’avoir à télécharger des éléments dans le cas des résultats OpenSearch . La fonctionnalité de recherche fédérée permet de rechercher des éléments à partir d’emplacements non-système de fichiers qui prennent en charge OpenSearch, tels que SharePoint et d’autres sites de services web, par exemple. Lorsque vous appelez des verbes sur ces éléments, le système télécharge une version temporaire de l’élément et le transmet à l’implémentation du verbe. Les implémenteurs de verbes sont encouragés à éviter d’avoir à télécharger le fichier en inscrivant l’ensemble de schémas d’URL pris en charge par le verbe pour diffuser en continu les éléments. Les verbes le font à l’aide de la clé de Registre SupportedProtocols .

Inscrire une application pour gérer des types de fichiers arbitraires

La définition d’éléments de menu contextuel pour un type de fichier particulier vous permet de spécifier la façon dont l’application associée ouvre un membre du type de fichier. Toutefois, les applications peuvent également inscrire une procédure par défaut distincte à utiliser lorsqu’un utilisateur tente d’utiliser l’application pour ouvrir un type de fichier qui n’est pas associé à l’application. Vous inscrivez la procédure par défaut de la même façon que vous inscrivez des éléments de menu contextuel. Pour plus d’informations sur la définition d’éléments de menu contextuel, consultez Création de gestionnaires de menu contextuel.

La procédure par défaut remplit deux objectifs de base. L’une consiste à spécifier la façon dont votre application doit être appelée pour ouvrir un type de fichier arbitraire. Vous pouvez, par instance, utiliser un indicateur de ligne de commande pour indiquer qu’un type de fichier inconnu est en cours d’ouverture. L’autre objectif est de définir les différentes caractéristiques d’un type de fichier, telles que les éléments de menu contextuel et l’icône. Si un utilisateur associe votre application à un type de fichier supplémentaire, cette classe aura ces caractéristiques. Si le type de fichier supplémentaire a été précédemment associé à une autre application, ces caractéristiques remplacent les éléments d’origine.

Pour inscrire la procédure par défaut, placez les mêmes clés de Registre que vous avez créées pour le ProgID de votre application sous la sous-clé de l’application deHKEY_CLASSES_ROOT\Applications. Vous pouvez également inclure une valeur FriendlyAppName pour fournir au système un nom convivial pour votre application. Le nom convivial de l’application peut également être extrait de son fichier exécutable, mais uniquement si la valeur FriendlyAppName est absente.

L’exemple d’entrée de Registre suivant illustre une procédure par défaut pour MyProgram.exe qui définit un nom convivial et plusieurs éléments de menu contextuel. Les chaînes de commande incluent l’indicateur /a pour informer l’application qu’elle ouvre un type de fichier arbitraire. Si vous incluez une sous-clé DefaultIcon , vous devez utiliser une icône générique.

HKEY_CLASSES_ROOT
   MyProgram.exe
      shell
         open
            command
               (Default) = C:\MyDir\MyProgram.exe /a "%1"
         print
            command
               (Default) = C:\MyDir\MyProgram.exe /a /p "%1"
         printto
            command
               (Default) = C:\MyDir\MyProgram.exe /a /p "%1" "%2"

Ressources supplémentaires

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

Choix d’un verbe statique ou dynamique pour votre menu contextuel

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