Как передать несколько путей к файлам / папкам через событие щелчка правой кнопкой мыши (глагол) к исполняемому файлу?
Связанные с:
Как добавить новые элементы в событие щелчка правой кнопкой мыши на Папки и файлы в Windows?
Я добавил пользовательский глагол правой кнопкой мыши ко всем файлам, добавив ключи реестра в HKEY_CLASSES_ROOT\*. Конечный результат выглядит так
HKEY_CLASSES_ROOT * \ Shell \ TestRightClick \ Command
------- По умолчанию = c:\RightClickTest.exe "%1"
Проблема: при выборе нескольких файлов c: \ RightClickTest.exe будет вызываться несколько раз (количество выбранных файлов)
Что мне нужно: передать несколько файловых путей в один исполняемый файл
2 ответа
Как я уже говорил в предыдущем вопросе, вы должны понимать это в своем приложении. Один экземпляр программы будет запущен для каждого выбранного файла, если вы не используете расширение оболочки. Ваша общая стратегия может быть такой:
- Когда приложение запускается с параметром файла (
%1
), проверьте, запущен ли какой-либо экземпляр приложения. - Если запущен другой экземпляр, откройте какой-либо канал межпроцессного взаимодействия (IPC) для этого приложения.
- Сообщите параметр файла этого экземпляра основному экземпляру.
- Напишите логику в основной программе, чтобы адрес получал эту информацию во время работы.
Если вы ищете быстрый и грязный обходной путь, вы можете создать ярлык для вашего исполняемого файла в "%AppData%\Microsoft\Windows\SendTo". Теперь вы можете выбрать группу файлов, щелкнуть правой кнопкой мыши, выбрать "Отправить", и ваш приложение.
Это передаст все выбранные файлы в качестве отдельных параметров командной строки одному экземпляру вашего приложения... имейте в виду, что существует ограничение в 32767 символов в командной строке, которое ограничит количество файлов, которые вы можете передать в ваше приложение, используя этот метод, и убедитесь, что ваша программа не пытается открывать файлы, с которыми она не знает, что делать. В конечном счете, метод Фактора Мистика намного лучше.