我需要一种方法,使用C#或C ++为Windows XP / Vista中的文件夹和文件创建Icon Overlay?有什么例子吗?
谢谢, -Sean!
答案 0 :(得分:10)
不这样做!请不要。
你将打破很多应用程序。 Shell扩展不得使用.net框架(或任何其他类似框架)。
Here's解释为什么你不能这样做。
用C / C ++编写扩展名,但不用C#编写。
更新: 尽管从.NET4开始,可以在一个进程中拥有多个框架版本,但它仍然不推荐并且不受Microsoft支持! 请参阅this帖子了解原因:
[...]这些问题促使我们正式建议反对 - 而不是支持 - 使用托管代码开发进程内shell扩展。
答案 1 :(得分:7)
Tigris'TortoiseSVN产品大量使用由几个Tortoise产品共享的库提供的图标覆盖,覆盖本身是用C ++而不是C#编写的。
documentation for the TortoiseOverlays project解释了他们如何使用它以及他们遇到的问题(用户名:来宾,空密码),以及GPL的源代码在Subversion repository(与上面相同的用户名/密码) )。
来自文档的Snippit:
TortoiseOverlays向浏览器注册以处理这九个问题 上面提到的状态,即它注册了九个覆盖处理程序。该 explorer进程初始化TortoiseOverlays处理程序,调用它 IShellIconOverlayIdentifier :: GetOverlayInfo()。 TortoiseOverlays看起来 对于已注册的叠加处理程序 HKLM \ Software \ TortoiseOverlays \ Statusname并调用他们的 GetOverlayInfo()方法,所以他们也可以初始化(注意任何 更改为图标名称,索引,...您的处理程序确实被覆盖 以后不会被使用 - 它是处理图标的TortoiseOverlays 现在)。初始化后,TortoiseOverlays会中继每次调用 它的IShellIconOverlayIdentifier :: IsMemberOf()方法 处理程序。返回S_OK的第一个处理程序确定是否 图标是否显示。