Как передать несколько путей к файлам / папкам через событие щелчка правой кнопкой мыши (глагол) к исполняемому файлу? - PullRequest
9 голосов
/ 01 декабря 2009

Связанный:

Как добавить новые элементы в событие щелчка правой кнопкой мыши на Папки и файлы в Windows?

Я добавил пользовательский глагол правой кнопкой мыши ко всем файлам, добавив ключи реестра в HKEY_CLASSES_ROOT \ *. Конечный результат выглядит так

HKEY_CLASSES_ROOT * \ Shell \ TestRightClick \ Command

------- По умолчанию = c: \ RightClickTest.exe "% 1"

Проблема: при выборе нескольких файлов c: \ RightClickTest.exe будет вызываться несколько раз (количество выбранных файлов)

Что мне нужно: передать несколько файловых путей к одному исполняемому файлу

Ответы [ 2 ]

7 голосов
/ 18 марта 2011

Если вы ищете быстрый и грязный обходной путь, вы можете создать ярлык для вашего исполняемого файла в «% AppData% \ Microsoft \ Windows \ SendTo». Теперь вы можете выбрать группу файлов, щелкнуть правой кнопкой мыши, выбрать «Отправить» и ваше приложение.

Это передаст все выбранные файлы в качестве отдельных параметров командной строки одному экземпляру вашего приложения ... имейте в виду, что существует предел командной строки в 32767 символов, который ограничит количество файлов, которые вы можете передать своему приложению с помощью этого и убедитесь, что ваша программа не пытается открывать файлы, с которыми она не знает, что делать. В конечном счете, метод Фактора Мистика намного лучше.

2 голосов
/ 01 декабря 2009

Как я уже говорил в предыдущем вопросе, вы должны понимать это в своем приложении. Один экземпляр программы будет запущен для каждого выбранного файла, если вы не используете расширение оболочки. Ваша общая стратегия может быть такой:

  1. Когда приложение запускается с параметром файла (%1), проверьте, запущен ли уже какой-либо экземпляр приложения.
  2. Если запущен другой экземпляр, откройте какой-либо канал межпроцессного взаимодействия (IPC) для этого приложения.
  3. Сообщите параметр файла этого экземпляра основному экземпляру.
  4. Записать логику в основную программу, чтобы адрес получал эту информацию во время работы.
...