Створити пункт контекстного меню Windows Shell, який сприймає один файл як аргумент, дуже просто. Дивіться це питання для прикладу.
Однак як створити пункт контекстного меню, який сприймає кілька аргументів як аргументи? Скажімо, для інструмента розлиття (у моєму випадку P4Merge), хоча ця сама техніка, без сумніву, може бути застосована і для інших програм.
Я встановив P4Merge, але він не додає елемент до контекстного меню автоматично, тому мені доведеться це робити вручну.
Коли я спробував використовувати:
"C:\Program Files\Perforce\p4merge.exe" %1 %2
як командний рядок я отримав помилку:
Помилки: потрібно щонайменше два файли. Не вдається відкрити лише один файл. P4Merge потребує 0, 2 або 3 файлів.
Коли я спробував використовувати:
"C:\Program Files\Perforce\p4merge.exe" %0 %1
як командний рядок він відкрив два екземпляри P4Merge, по одному для кожного файлу.
Здається, правильні імена файлів передаються через% 0 та% 1, але для кожного з них виконується інший примірник програми P4Merge.
Наразі у мене є інструмент DiffMerge SourceGear, який містить пункт контекстного меню Shell, і він прекрасно працює, оскільки я в змозі вибрати два файли та використовувати пункт контекстного меню, щоб запустити на них відмінності. Я намагаюся шукати в реєстрі, щоб побачити, які аргументи використовує DiffMerge, але я не зміг знайти командний рядок DiffMerge, який включав аргументи.