按上下文菜单打开超过15个文件而不使用MultipleInvokePromptMinimum

时间:2017-05-03 11:26:15

标签: 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\""

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

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
"MultipleInvokePromptMinimum"=dword:00001388

这可以完成这项工作,唯一的问题是我不想启用其他"打开"或"打印"右键单击超过15个文件的选项,只是我的自定义文件。

("使用Notepad ++编辑"例如,右键单击选项已启用超过15个文件而不更改MultipleInvokePromptMinimum)

最好的方法是什么?提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

根据您支持的最低Windows版本,您可以实现多种类型的shell扩展:

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

  • IDropTarget需要一个完整的COM服务器,但适用于Windows XP及更高版本。可以找到教程/示例here

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

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