【问题标题】:Windows Explorer right click context menu for files and foldersWindows 资源管理器右键单击文件和文件夹的上下文菜单
【发布时间】:2014-01-11 12:18:42
【问题描述】:

我的问题与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 相关。

谢谢。

【问题讨论】:

  • 我相信你可以使用 DDE。但这不推荐。最好是 shell 扩展。

标签: c++ windows shell contextmenu windows-explorer


【解决方案1】:

我认为正确的方法是写ContextMenuHandler并将其注册为shell扩展。

您可以找到很多示例,例如 hereherehere

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

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#

【讨论】:

  • 您所链接的答案实际上都没有提供解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
相关资源
最近更新 更多