外壳图标叠加(C#)

时间:2009-05-09 15:35:19

标签: c# c++ icons overlay shell-extensions

我需要一种方法,使用C#或C ++为Windows XP / Vista中的文件夹和文件创建Icon Overlay?有什么例子吗?

谢谢, -Sean!

2 个答案:

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