См. GitHub SingleInstanceAccumulator для C # реализации хорошо носимого подхода Mutex + COPYDATA к этому.
другие стеки выражающие потребность.
Конфигуратор контекстного меню Проводника
::creates the entry
:: and crucial multi-file handling property
reg add "HKEY_CLASSES_ROOT\FileType\shell\YourNewContextMenu" /f /v "MultiSelectModel" /d "Player"
::your desired command line
reg add "HKEY_CLASSES_ROOT\FileType\shell\YourNewContextMenu\command" /f /ve /t REG_EXPAND_SZ /d "***see command line examples***"
например. В моей системе для файлов ".mov" я бы заменил FileType
выше на VLC.mov
Пример сложного REG ADD
Замените "* см. Примеры командной строки *" выше на желаемую командную строку.
Примечание: кавычки & переменные окружения должны быть экранированы и экранировать работу немного по-другому для начальной команды по сравнению с более поздней строкой!?!
λ reg add "HKEY_CLASSES_ROOT\VLC.mov\shell\Transcode\command" /f /ve /t REG_EXPAND_SZ /d "\"^%bin^%\SingleInstanceAccumulator\" -f \"-c:powershell -ExecutionPolicy bypass "\"^%bin^%\test.ps1\"" -list '$files'\" \"%1\""
Использование SingleInstanceAccumulator.exe
"-c:command line" (default: cmd /c echo $files && pause)
$files will be replace with aggregated list
-f = output each item on separate line to new tempfile
$files will be replaced by the tempfile path
quote will default to nothing
-d:delimiter (default: ,)
-q:quote (default: ")
-t:timeout millisecs (default: 200)
-w = hidden launch
-v = debug output
Примеры командной строки
примечание: исходная команда должна иметь путь , чтобы команда shell> работала
PowerShell & временный файл
примечание: -f использование
"%bin%\SingleInstanceAccumulator" -f "-c:powershell -ExecutionPolicy bypass "%bin%\test.ps1" -list '$files'" "%1"
PowerShell & встроенный список файлов
примечание: -q использование
"%bin%\SingleInstanceAccumulator" -q:' "-c:powershell -ExecutionPolicy bypass "%bin%\test.ps1" -list $files" "%1"
test.ps1 (с временным файлом)
powershell
param(
[String]$listFilePath
)
gc $listFilePath | % { $_ }
pause
erase $listFilePath
pause
test.ps1 (с массивом файлов parm)
param(
[String[]]$filesList
)
$filesList | % { $_ }
pause