不使用MultipleInvokePromptMinimum,可以通过上下文菜单打开超过15个文件

tk_*_*tk_ 5 windows registry contextmenu windows-shell

我已经添加了右键单击选项,以使用我的c ++程序打开文件:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Open With MyProgram]
"Icon"="\"C:\\Program Files (x86)\\myProgram.exe\""

[HKEY_CLASSES_ROOT\*\shell\Open With MyProgram\command]
@="\"C:\\Program Files (x86)\\myProgram.exe\" \"%1\""
Run Code Online (Sandbox Code Playgroud)

这很好。当我选择15个以上的文件时,右键单击选项将消失。我已经阅读了有关MultipleInvokePromptMinimum的以下方法:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
"MultipleInvokePromptMinimum"=dword:00001388
Run Code Online (Sandbox Code Playgroud)

这样就可以完成工作,唯一的问题是我不想为15个以上的文件(我的自定义文件)启用其他“打开”或“打印”右键单击选项。

(例如,在不更改MultipleInvokePromptMinimum的情况下,为15个以上的文件启用了“使用Notepad ++编辑”右键单击选项)

什么是实现这一目标的最佳方法?提前致谢。

And*_*ers 3

MultiSelectModel正如您已经从评论中发现的那样,一个普通的静态动词有一个限制,可以通过设置to将其提高到 100 player。Explorer 只允许基于 COM 的 shell 扩展超出此限制。

您可以实现多种类型的 shell 扩展,具体取决于您支持的最低 Windows 版本:

  • IExecuteCommand工作量最少,但仅适用于 Windows 7 及更高版本。教程/示例可以在这里找到。

  • IDropTarget需要完整的 COM 服务器,但可以在 Windows XP 及更高版本上运行。教程/示例可以在这里找到。

  • IContextMenu注册下ShellEx\ContextMenuHandlers适用于每个 Windows 版本,但这些旧系统上不存在选择限制,因此无需在您的情况下实现此操作。

建议您使用 C/C++ 或 Delphi 编写扩展,而不是使用 C# 等 .NET 语言(这是建议或要求,具体取决于 Windows 和 .NET 版本)。

  • @Chibs 注册表中的普通静态条目无法绕过 100 个限制。您必须实现 shell 扩展。 (2认同)