【问题标题】:Open more than 15 Files by Context Menu without MultipleInvokePromptMinimum在没有 MultipleInvokePromptMinimum 的情况下通过上下文菜单打开超过 15 个文件
【发布时间】:2017-05-03 11:26:14
【问题描述】:

我已经添加了一个右键单击选项来使用我的 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)

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

【问题讨论】:

  • 您是否尝试将 MultiSelectModel 设置为 Player? msdn.microsoft.com/en-us/library/windows/desktop/…
  • 谢谢!我将 MultiSelectModel 设置为 Player,现在我可以通过右键单击选项打开多达 100 个文件。对于超过 100 个文件,该选项仍然出现,但如果我选择它,它只会打开 1 个文件。我想我必须将我的应用程序实现为“COM”而不是“Legacy”才能用我的应用程序打开无限数量的文件。你知道如何将我的程序实现为 COM 吗?
  • 我认为最简单的方法是创建 IDropTarget shell 扩展,然后将子项“DropTarget”添加到您的子项“Open With MyProgram”中。在您的 IDropTarget shell 扩展中,您可以做任何您想做的事情。例如,您可以创建带有文件列表的文本文件并将其传递给您真正的“旧版”应用程序。
  • tk_ - 你是如何用上下文菜单打开 100 个文件的?我正在尝试实现这一点,但我的应用程序打开了多个实例。我正在尝试选择多个图像并单击我的菜单,这会将图像列表传递给应用程序。

标签: windows registry contextmenu windows-shell


【解决方案1】:

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

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

  • IExecuteCommand 是最少的工作量,但它只能在 Windows 7 及更高版本上使用。教程/示例可以在here找到。

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

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

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

【讨论】:

  • 我知道已经有一段时间了,但我怎样才能超过 100 个文件的最小值?
  • @Chibs 注册表中的普通静态条目无法绕过 100 限制。您必须实现一个外壳扩展。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 2017-09-21
  • 2011-04-22
  • 2014-08-28
相关资源
最近更新 更多