Запуск одного экземпляра программного обеспечения для нескольких выбранных файлов с помощью контекстного меню окон с помощью установщика NSIS.

У меня есть программное обеспечение, которое отлично работает для одного файла, используя контекстное меню Windows, но открывает несколько экземпляров программного обеспечения, когда я выбираю несколько файлов и нажимаю команду из контекстного меню.

введите здесь описание изображения

Мой текущий скрипт для команды таков:

Section "Integrate Shred" SectionShred
    # register file association verb
    WriteRegStr HKCR "AllFileSystemObjects\shell\shred.bleachbit" "" 'Shred with BleachBit'
    WriteRegStr HKCR "AllFileSystemObjects\shell\shred.bleachbit\command" "" '"$INSTDIR\bleachbit.exe" --gui --no-uac --shred "%1"'
SectionEnd

Помогите мне отредактировать приведенный выше скрипт, чтобы один экземпляр запускался для нескольких выбранных файлов.


person aki92    schedule 10.02.2014    source источник


Ответы (1)


Есть как минимум 3 способа сделать это, но все они предполагают добавление дополнительного кода в ваше приложение:

  • IDropTarget (WinXP+)
  • DDE (Win95+, но устарело)
  • Реализуйте свою собственную обработку с помощью мьютекса + FindWindow + WM_COPYDATA

Если вашей целью является Vista+, вы, вероятно, можете обойтись более простой версией реализации droptarget, используя один из интерфейсов IExplorer*...

person Anders    schedule 10.02.2014
comment
Спасибо @Anders, я попробовал 1-й вариант, но мне не удалось его использовать должным образом, если возможно, не могли бы вы дать мне пример кода, с помощью которого мне будет легче понять. - person aki92; 12.02.2014
comment
Я связался с некоторым примером кода в своем ответе. Вы также можете изменить теги в этом вопросе, это не имеет ничего общего с NSIS, это скорее вопрос, связанный с оболочкой Windows... - person Anders; 13.02.2014
comment
На самом деле, сэр, я хотел узнать код, связанный с NSIS, как с использованием оболочки, которую я понял, но я не могу интегрировать ее с NSIS.... поэтому, если у вас есть представление о том, как это сделать в Windows, это будет очень полезно ... - person aki92; 13.02.2014
comment
Часть NSIS похожа на то, что у вас уже есть, вам просто нужно добавить DropHandler под shellex. - person Anders; 14.02.2014