【问题标题】:How to add item to windows explorer content menu in delphi?如何在delphi中将项目添加到Windows资源管理器内容菜单?
【发布时间】:2011-04-17 09:41:15
【问题描述】:

我想在 Windows 资源管理器内容菜单中创建菜单项(适用于所有文件类型),单击后将打开我的应用程序并将选定的文件名传递给它。有没有这方面的教程?我知道有可用的 ShellPlus 组件,但它有点过时了。

【问题讨论】:

    标签: windows delphi explorer


    【解决方案1】:

    注册表

    此方法很简单,因为它归结为添加一些注册表项。缺点是你不能在其中加入任何逻辑。你可以阅读herehere Delphi 中的一个简单示例。如果您使用 DDE 执行菜单项,您将获得更多控制权。有关 Delphi 示例,请参阅 here

    外壳扩展

    此方法工作量更大,但您可以通过代码完全控制上下文菜单。您必须编写一个 DLL,实现 IContextMenu(或其他)并使用 Windows 资源管理器注册 dll。你可以阅读它here。你已经提到了Shell+

    【讨论】:

    • +1 用于建议 Shell 扩展,但请注意,由于我们无法在 Delphi 中创建 x64 DLL(目前),它仅适用于支持 Shell 扩展的 x86 资源管理器和 x86 应用程序(在 x86 和 x64 上)窗户)。
    • delphi3000链接不见了,而且不在wayback机里,有没有人可以分享一下使用注册表的代码?我正在研究注册任意 (*) 文件类,但找不到方法(MS 对我来说不是那么清楚 :()
    【解决方案2】:

    Delphi 包含一个用于外壳扩展的演示项目。查看 Demos\ActiveX\ShellExt 文件夹。

    【讨论】:

    • Rob,11 年后,我对这个主题很感兴趣。我想编写一个内容菜单编辑器,我找不到remove invid COntenxt Menu items 的应用程序,所以我不妨编写它,并添加更多功能。但是,在第一次搜索中,所有解决方案,包括你的,都建议使用 ActiveX,知道如何在没有 ActiveX 的情况下使用它吗?以及(Windows 资源管理器)上下文菜单上的任何一般阅读链接?
    • 有两种上下文菜单项。一方面,您只需提供应该显示的文本,以及当用户选择菜单项时资源管理器应该运行的命令行。另一方面,您指定资源管理器将加载的 DLL,该 DLL 将提供一个或多个菜单项。 ActiveX 就是 COM,COM 本质上是 Windows 插件系统。如果没有 COM,您将无法编写后一种样式的上下文菜单项。但你不需要那个。您只需要清除已卸载程序留下的过时注册表项即可。
    【解决方案3】:

    这可以通过在注册表中为所需的文件类型设置快捷菜单处理程序而独立于编程语言。在那里,您可以使用正确的路径、正确的选项和正确的文件占位符调用您的应用程序。

    有关更多详细信息,请参阅 Creating Shortcut Menu Handlers 上的 MSDN 文章。

    【讨论】:

      猜你喜欢
      • 2012-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      相关资源
      最近更新 更多