Фон: я хочу добавить свое приложение в контекстное меню Windows, я сделал это, добавив новый ключ в реестр Windows:
HKEY_CLASSES_ROOT\*\shell\myapp
HKEY_CLASSES_ROOT\*\shell\myapp\command
И присвоив значение по умолчанию клавиши «команда» местонахождению моего exe, а также дополнительный аргумент:
value = "c:\users\john\myapp\myappexe.exe" "%1" arg1
Это работает, я могу «щелкнуть правой кнопкой мыши» любой файл и запустить свое приложение с этим файлом. Проблема возникает, когда я пытаюсь выбрать несколько файлов, он открывает столько окон моего приложения, сколько выбранных файлов, я хочу иметь возможность обрабатывать все входные данные с помощью одного экземпляра моей программы.
Я знаю, что это можно решить, создав расширения оболочки, как опубликовано здесь, здесь, здесь или здесь. Создание полнофункционального расширения оболочки выходит за рамки моего (небольшого) проекта, и я не нашел руководств, которые мог бы понять.
Проблема: я ищу способ обойти это и обнаружил, что программа, вызываемая из папки «отправить» в Windows, может обрабатывать несколько файлов, например, если я помещу исполняемый файл этого кода (С++) в C:\Users\john\AppData\Roaming\Microsoft\Windows\SendTo
папка,
#include <iostream>
using namespace std;
int main(int argc, char* argv[]){
for(int i=0;i<=argc;i++){
cout << argv[i] << endl;
}
return 0;
}
...выделите кучу мух, и перетащите их в исполняемый файл, я получу в одном окне путь ко всем выбранным файлам (присылать на руководство). Как это работает? Могу ли я использовать это поведение и применить его к своему приложению?