文件和文件夹的Windows资源管理器右键上下文菜单

4
我的问题类似于这个,但是那篇文章没有给我需要的所有信息,或者我没有完全理解它。
我希望在文件上下文菜单中有一个通知我的应用程序的选项。
我添加了键:
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。
谢谢。

你可以使用DDE,但这并不推荐。更好的选择是使用Shell扩展。 - David Heffernan
1个回答

3

我认为正确的方式是编写ContextMenuHandler并将其注册为Shell扩展。

你可以在这里, 这里这里找到许多示例。

上下文菜单处理程序在键下注册

HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers

SO上已经有类似的问题:

如何通过右键事件(动词)向可执行文件传递多个文件/文件夹路径?

如何将多个文件名传递给上下文菜单外壳命令?

C++中用于多个文件的Windows上下文菜单

从Windows shell上下文菜单获取多个文件(参数)在C#上进行操作


你链接的所有答案都没有提供解决方案。 - Jake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接