Как передать множество файлов одной команде из контекстного меню проводника Windows
Вы можете достичь этого с помощью моей программы под названием singleinstance (исходный код).
Никакие расширения оболочки (shell extensions) не задействованы.
Основная идея заключается в том, что для каждого выбранного файла запускается один экземпляр моей программы. Она проверяет, запущен ли уже другой экземпляр программы singleinstance, и использует межпроцессное взаимодействие (IPC), чтобы уведомить уже запущенный экземпляр о том, что были выбраны другие файлы.
Не забудьте установить параметр MultiSelectModel=Player, иначе количество файлов будет ограничено.
Использование:
Usage: singleinstance.exe "%1" {command} $files [arguments]
Optional arguments for singleinstance (not passed to command):
--si-timeout {time to wait in msecs}
Файл реестра:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SystemFileAssociations\.txt\Shell\p4merge]
"MultiSelectModel"="Player"
[HKEY_CLASSES_ROOT\SystemFileAssociations\.txt\Shell\p4merge\Command]
@="\"d:\\singleinstance.exe\" %1 \"C:\\Program Files\\Perforce\\p4merge.exe\" $files --si-timeout 400"