Il est facile de créer un élément de menu contextuel Windows Shell qui prend un seul fichier comme argument. Voir cette question pour un exemple.
Cependant, comment créer un élément de menu contextuel qui prend plusieurs fichiers comme arguments ? Par exemple, pour un outil de diff-fusion (dans mon cas P4Merge), bien que la même technique soit sans doute applicable à d'autres applications.
J'ai installé P4Merge mais il n'ajoute pas automatiquement un élément au menu contextuel, je vais donc devoir le faire manuellement.
Quand j'ai essayé d'utiliser :
"C:\Program Files\Perforce\p4merge.exe" %1 %2
en ligne de commande, j'ai obtenu 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
comme 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 qu'une instance différente de l'application P4Merge soit exécutée pour chacun d'eux.
J'ai actuellement l'outil DiffMerge de SourceGear qui a un élément sur le menu contextuel Shell et cela fonctionne à merveille, car je suis capable de sélectionner deux fichiers et d'utiliser l'élément du menu contextuel pour lancer une diff sur eux. J'ai essayé de chercher 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.