shell图标叠加(C#)

我需要一种方法来使用C#或C ++为Windows XP / Vista中的文件夹和文件创建Icon Overlay? 任何例子?

谢谢, – 西恩!

Tigris的TortoiseSVN产品大量使用由几个Tortoise产品共享的库提供的图标覆盖,覆盖本身是用C ++而不是C#编写的。

TortoiseOverlays项目的文档解释了他们如何使用它以及他们遇到的问题(用户名:来宾,空密码),以及GPL的源代码在Subversion存储库中 (与上面相同的用户名/密码)。

来自文档的Snippit:

TortoiseOverlays向浏览器注册以处理上述九种状态,即它注册了九个覆盖处理程序。 资源管理器进程初始化TortoiseOverlays处理程序,调用其IShellIconOverlayIdentifier :: GetOverlayInfo()。 TortoiseOverlays在HKLM \ Software \ TortoiseOverlays \ Statusname下查找已注册的叠加处理程序,并调用它们的GetOverlayInfo()方法,以便它们也可以进行初始化(请注意,对图标名称,索引等的任何更改都会在以后被覆盖并赢得不会被使用 – 它是现在处理图标的TortoiseOverlays。 初始化之后,TortoiseOverlays将对其IShellIconOverlayIdentifier :: IsMemberOf()方法的每次调用中继到其他处理程序。 返回S_OK的第一个处理程序确定是否显示图标。

要这样做! 拜托,请不要。

你将打破很多应用程序。 Shell扩展不得使用.net框架(或任何其他类似的框架)。

这是为什么你不能这样做的解释。

用C / C ++编写扩展名,但不用C#编写。

更新:尽管从.NET4开始,可以在一个进程中拥有多个框架版本,但仍然建议使用它,Microsoft也不支持! 看到这篇文章有关原因:

[…]这些问题促使我们正式建议反对 – 而不是支持 – 使用托管代码开发进程内shell扩展。