我的问题类似于this,但这并没有提供我需要的所有信息,或者我对此并不了解。
我希望在文件上下文菜单中可以选择通知我的应用程序。
我添加了键:
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;
}
这很好,但是......如果我标记了几个文件/文件夹并右键单击并选择我添加的选项,则会启动许多测试应用程序。
这不是我想要的行为,我希望所有路径都会作为argv
的列表传递到我的应用的单个实例中,有谁知道该怎么做?
顺便说一句。我正在使用C++
进行编码,但我认为这与Windows shell的业务无关。
感谢。
答案 0 :(得分:3)
我认为正确的方法是编写ContextMenuHandler并将其注册为shell扩展。
上下文菜单处理程序在密钥
下注册HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers
关于SO也有类似的问题:
How to pass in multiple file/folder paths via a right-click event (verb) to an executable?
How to Pass MULTIPLE filenames to a Context Menu Shell Command?
Windows context menu for multiple files [C++]
Taking multiple files (arguments) from Windows shell context menu on C#