外壳图标叠加(C#)

Sea*_*ean 6 c# c++ icons overlay shell-extensions

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

谢谢, - 西恩!

Ste*_*fan 10

千万不能这样做!拜托,请不要.

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

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

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

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

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


Ric*_*ter 7

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的第一个处理程序确定是否显示图标.