【问题标题】:Windows Explorer add-onsWindows 资源管理器加载项
【发布时间】:2010-12-06 04:45:48
【问题描述】:

SVN 和 Git 等工具如何将自身附加到 Windows 资源管理器,以便在右键菜单中添加选项以及根据文件是否已编辑添加对勾/感叹号?

(我不关注 Git 或 SVN 特定的信息 - 我只是将它们用作示例)

【问题讨论】:

    标签: windows-explorer add-on


    【解决方案1】:

    你想要的叫做 Shell Extensions,是进程内的 COM 对象,它扩展了 Windows 操作系统的能力。


    (来源:csscript.net)

    你可以看到这些链接

    再见。

    【讨论】:

      【解决方案2】:

      Explorer 允许 DLL 注册为 shell 扩展。 shell 扩展可以提供上下文菜单项、图标覆盖和许多其他功能。它通过暴露 Explorer 调用的某些 COM 接口来做到这一点,例如在显示菜单或图标之前。这里是MSDN home page for shell extensibility——虽然奇怪的是上下文菜单和图标覆盖的东西似乎不再存在——你可能不得不尝试 Win32 和 COM 开发下的离线 SDK |用户界面 | Windows 用户体验 | Windows 外壳 | Shell 开发人员指南 |将应用程序集成到外壳中。

      【讨论】:

        【解决方案3】:

        根据您想要的外壳扩展,它们的实现可能非常复杂。我不知道你在寻找什么,快速编写一个不错的扩展,或者深入了解细节并学习所有的实践。 如果您不关心如何实现,并且只是有一些想要实现的想法,请查看这个库以编写 shell 扩展......

        EZShellExtensions MFC
        EZShellExtensions.NET

        有很多不同的类型:
        - 上下文菜单
        - 属性页
        - 图标处理程序
        还有更多...

        他们还有另一个用于编写命名空间扩展的库(显示在 Windows 资源管理器的树窗格中的内容)。

        【讨论】:

        • 您正在链接到该框架的 .NET 版本。永远不要使用它!永远不要在 .NET 中编写 shell 扩展。原因如下:blogs.msdn.com/oldnewthing/archive/2006/12/18/1317290.aspx
        • 有趣的地方。没想到。我想这可能是也可能不是问题,具体取决于您的目标受众。如果您正在为控制良好的受众写作(例如,Intranet 网站如何定位 JUST IE,而忽略其他浏览器),这可能不是问题,但对于公开发布,这是一个值得考虑的好点。更新了我的答案以包含 MFC 版本。
        • 这不是 IE 与其他浏览器的问题。问题是每个使用插件的应用程序都可能崩溃。想象一个使用 COM 插件的本机应用程序,其中一个 COM 插件是用 .NET 编写的。如果应用在需要加载插件之前使用了文件打开/保存对话框,则该插件可能无法加载,因为另一个 .NET 运行时已由于该错误的 shell 扩展名而被加载。实际上,甚至不需要使用文件打开/保存对话框:即使是一些常用的“普通”shell 函数,如 SHGetFileInfo() 也可以。是的:如果安装了这样的 shell 扩展,我有一个应用程序会中断
        • 是的,不是的;我明白你在说什么...... IE 的事情只是一个例子,你有时不必担心这种情况,这取决于你的应用程序。例如,在许多银行环境中,工作站是高度、高度控制的,没有经过深入和彻底测试的系统不会发生任何事情。如果您处于其中一种环境中,那么事情在某些方面会容易一些。不过,对于普通大众来说,是的——这些问题绝对值得考虑。
        • @Stefan 随着 2010 年 4 月 12 日在 .NET 4.0 中引入不同 CLR 版本的进程内并行执行,这个问题终于得到了解决。另见相关 SOF 文章:stackoverflow.com/questions/3053876/…。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-10
        • 2013-12-26
        • 2023-03-27
        • 1970-01-01
        相关资源
        最近更新 更多