Создать элемент контекстного меню оболочки Windows, который принимает в качестве аргумента один файл, очень просто. Смотрите этот вопрос для примера.
Тем не менее, как вы создаете пункт контекстного меню, который принимает несколько файлов в качестве аргументов? Скажем, для инструмента diff-merge (в моем случае 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.
В настоящее время у меня есть инструмент SourceGear DiffMerge, у которого есть пункт в контекстном меню оболочки и который прекрасно работает, так как я могу выбрать два файла и использовать пункт контекстного меню для запуска сравнения с ними. Я пытаюсь найти в реестре аргументы DiffMerge, но не могу найти командную строку DiffMerge, в которой есть аргументы.