2009-10-13 155 views
7

SVN和Git等工具如何将它们自己附加到Windows资源管理器中,以便它们将选项添加到右键单击菜单以及根据文件是否被编辑添加刻度/感叹号?Windows资源管理器加载项

(我不是后的Git或SVN特定的信息 - 我只是把他们当作例子)

回答

3

Explorer允许的DLL为外壳扩展注册。外壳扩展可以提供上下文菜单项,图标叠加和许多其他功能。它通过暴露资源管理器调用的某些COM接口来实现,例如在显示菜单或图标之前。这里是MSDN home page for shell extensibility--尽管奇怪的是关于上下文菜单和图标叠加层的东西似乎不再存在 - 您可能必须尝试Win32下的离线SDK和COM开发|用户界面| Windows用户体验| Windows Shell | Shell开发人员指南|将应用程序集成到Shell中。

1

取决于你想要的shell扩展,它们可以非常复杂地实现。我不知道你在找什么,快速写出一个很好的扩展名,或者深入了解这一切,并且学习所有这一切。 如果你不为关注的是怎么了,只是你想实现一些想法,看看这个库编写shell扩展...

EZShellExtensions MFC
EZShellExtensions.NET

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

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

+1

您正在链接到该框架的.NET版本。永远不要使用它!永远不要在.NET中编写shell扩展。原因如下: http://blogs.msdn.com/oldnewthing/archive/2006/12/18/1317290.aspx – Stefan 2009-10-13 13:14:35

+0

有趣的一点。没有想到这一点。我想,尽管这可能会或可能不会成为一个问题,取决于您的目标受众。如果你正在为受控制的受众撰写文章(例如,内部网站如何定位JUST IE,并忽略其他浏览器),这可能不是问题,但对于公开发布来说,这是一个很好的考虑点。更新我的答案以包含MFC版本。 – eidylon 2009-10-13 15:27:40

+1

这不是IE与其他浏览器的问题。问题是每个使用插件的应用程序都可能会中断。想象一下使用COM插件的本地应用程序,其中一个COM插件是用.NET编写的。如果应用程序在需要加载插件之前使用了文件打开/保存对话框,那么该插件可能无法加载,因为由于该错误的外壳扩展,已经加载了另一个.NET运行时。实际上,甚至不需要使用文件打开/保存对话框:即使是一些经常使用的“常规”shell函数,如SHGetFileInfo()也可以。 是的:如果安装了这种外壳扩展,我有一个应用程序可以中断 – Stefan 2009-10-15 20:33:00