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.
la source
Réponses:
Vous pouvez également essayer d'ajouter le programme au menu SendTo.
la source
En cherchant la réponse, il semble qu'il n'y ait pas de correctif simple et qu'une extension de shell soit nécessaire. En regardant à nouveau les entrées de Registre pour DiffMerge, il semble utiliser une extension shell: DiffMergeShellExtension64.dll. Si P4Merge n'a pas une telle extension shell, il semble que la seule façon de la faire fonctionner correctement dans le menu contextuel de l'Explorateur Windows serait d'en écrire une moi-même.
Le guide complet de l'idiot pour l'écriture de la série d' extensions shell dans Code Project est un guide utile pour écrire des extensions shell. La partie II de la série concerne l'écriture d'une extension qui gère plusieurs fichiers à la fois (exactement ce dont j'ai besoin).
Avertissement: le guide complet de l'idiot pour l'écriture d'extensions shell utilise C et COM, ATL (bibliothèque de modèles actifs) et MFC (classes Microsoft Foundation). Donc, écrire une extension shell, si vous n'êtes pas familier avec ces technologies, va être un processus long et potentiellement difficile; ce n'est certainement pas quelque chose que vous pouvez faire en une heure.
la source
Vous pouvez le faire avec mon programme context-menu-launcher (singleinstance) :
la source
.exe
fichiers dans vos réponses sans indiquer clairement qu'un téléchargement automatique commencera.