La création d'un élément de menu contextuel Windows Shell qui prend un seul fichier comme argument est facile. Voir cette question pour un exemple.
Cependant, comment créez-vous un élément de menu contextuel qui prend plusieurs fichiers comme arguments? Disons, pour un outil de fusion-diff (dans mon cas P4Merge), bien que la même technique serait sans doute également applicable pour d'autres applications.
J'ai installé P4Merge mais il n'ajoute pas automatiquement d'élément au menu contextuel, je devrai donc le faire manuellement.
Quand j'ai essayé d'utiliser:
"C:\Program Files\Perforce\p4merge.exe" %1 %2
comme ligne de commande, j'ai eu une erreur:
Erreurs: au moins deux fichiers sont nécessaires. Impossible d'ouvrir un seul fichier. P4Merge a besoin de 0, 2 ou 3 fichiers.
Quand j'ai essayé d'utiliser:
"C:\Program Files\Perforce\p4merge.exe" %0 %1
en tant que ligne de commande, il a ouvert deux instances de P4Merge, une pour chaque fichier.
Il semble que les noms de fichiers corrects soient transmis à% 0 et% 1 mais une instance différente de l'application P4Merge est en cours d'exécution pour chacun.
J'ai actuellement l'outil DiffMerge de SourceGear qui a un élément dans le menu contextuel de Shell et qui fonctionne à merveille, car je suis capable de sélectionner deux fichiers et d'utiliser l'élément de menu contextuel pour exécuter un diff sur eux. J'ai essayé de rechercher dans le registre pour voir quels arguments DiffMerge utilise, mais je n'ai pas pu trouver une ligne de commande DiffMerge qui comprenait des arguments.