Этот вопрос является дубликатом.
Это адресовано здесь:
Как передать несколько путей к файлам / папкам с помощью события щелчка правой кнопкой мыши (глагол) в исполняемый файл?
и здесь:
Как добавить новые элементы в событие щелчка правой кнопкой мыши на Папках и файлах в Windows?
и похож на этот оставшийся без ответа вопрос о суперпользователе:
Создание пункта контекстного меню для нескольких файлов
В двух словах, когда вы выбираете 2 файла и затем выбираете действие из контекстного меню («глагол» на языке оболочки Windows), окна всегда будут открывать 2 отдельных экземпляра, если только ваше приложение не проверит, проверяет ли оно уже бежит. Хитрость заключается в том, чтобы включить в ваше приложение (в моем случае, командный файл) альтернативный метод для выполнения. Это может быть достигнуто, когда Фактор Мистик и Реми Лебо - TeamB оба указывают на использование Межпроцессное взаимодействие (IPC) , такое как Динамический обмен данными (DDE) . Фактор Мистик также перечисляет некоторые хорошие ссылки MSDN для этого. Также есть быстрый и грязный способ, предложенный низкоуровневым использованием SendTo.
Вот мой быстрый и грязный путь:
@ECHO off
SETLOCAL
IF NOT EXIST C:\file.tmp (
ECHO %1 > C:\file.tmp
) ELSE (
FOR /F "TOKENS=*" %%A IN (C:\file.tmp) DO (
DEL C:\file.tmp
C:\BATCH %1 %%A
)
)
SETLOCAL
Это приложение, которое я использую для действия типа "глагол", и оно принимает только одну переменную. Я не использовал DDE, потому что я кеширую первый файл на диске. Затем вызовите реальное приложение (BATCH) из первого, как только у меня появятся оба файла. Очевидно, что возникают проблемы при вызове нечетного количества файлов, но, как я уже сказал, это быстро и грязно.
Во всяком случае, я закрываю это, так как я полагаю, что есть множество информации о том, как решить это правильным способом.