Создать элемент контекстного меню оболочки 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, в которой есть аргументы.
источник
Ответы:
Вы также можете попробовать добавить программу в меню SendTo.
источник
Просматривая ответ, кажется, что простого исправления не существует и требуется расширение оболочки. Еще раз заглядывая в записи реестра для DiffMerge, он, похоже, использует расширение оболочки: DiffMergeShellExtension64.dll. Если у P4Merge нет такого расширения оболочки, то похоже, что единственный способ заставить его работать правильно в контекстном меню Windows Explorer - это написать его самостоятельно.
Полное идиотское руководство по написанию расширений оболочки в Code Project - полезное руководство по написанию расширений оболочки. Вторая часть серии посвящена написанию расширения, которое обрабатывает несколько файлов одновременно (именно то, что мне нужно).
Предупреждение: полное руководство идиота по написанию расширений оболочки использует C и COM, ATL (Active Template Library) и MFC (классы Microsoft Foundation). Поэтому написание расширения оболочки, если вы не знакомы с этими технологиями, будет долгим и потенциально трудным процессом; это определенно не то, что вы можете сделать за час.
источник
Вы можете сделать это с помощью моей программы context-menu-launcher (singleinstance) :
источник
.exe
файлами в ваших ответах, не давая понять, что автоматическая загрузка начнется.