Windows Explorer правой кнопкой мыши контекстное меню для файлов и папок

мой вопрос похож на этот, но это не давало всей необходимой мне информации, или я не очень хорошо это понимал.

Я хочу, чтобы в контекстном меню файла была возможность уведомить мое приложение.

Я добавил ключи:

HKLM/SOFTWARE/Classes/*/shell/MyApp/command::"C:\\path\\test.exe" "%1"HKLM/SOFTWARE/Classes/Folder/shell/MyApp/command::"C:\\path\\test.exe" "%1"

Код теста:

#include <iostream>

int main(int argc, char *argv[])
{
for (int i = 1; i < argc; ++i)
std::cout << argv[i] << "\r\n";
system("pause");
return 0;
}

Это работает нормально, но … Если я отмечу несколько файлов / папок и щелкну правой кнопкой мыши и выберу свою добавленную опцию, запустится много тестовых приложений.

Это не то поведение, которое я хочу, я хочу, чтобы все пути передавались в один экземпляр моего приложения в виде списка argvs, кто-нибудь знает, как это сделать?

КСТАТИ. Я кодирую с C++ но я думаю, что это не имеет значения, так как это бизнес с оболочкой Windows.

Благодарю.

4

Решение

Я думаю, что правильный путь — написать ContextMenuHandler и зарегистрируйте его как расширение оболочки.

Вы можете найти много образцов, таких как Вот, Вот или же Вот

Обработчики контекстного меню регистрируются под ключом

HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers

По SO уже есть похожие вопросы:

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

Как передать несколько имен файлов в команду оболочки контекстного меню?

Контекстное меню Windows для нескольких файлов [C ++]

Получение нескольких файлов (аргументов) из контекстного меню оболочки Windows на C #

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]