.NET:如何创建文件图标覆盖?

8
我试图在各种文件的图标上添加不同的图标叠加层(注意:不是某种类型的所有文件,而只是某些文件)。如果你不明白我的意思,我指的是像TortoiseSVN、TortoiseHG、Dropbox等程序所做的事情。
这能在.NET中实现吗?如果可以,怎么做?我希望有一个库可以做到这一点。我发现了这篇关于类似功能的CodeProject文章,但它不是.NET。
提前致谢。

尝试使用此链接:https://www.codeproject.com/Articles/545781/NET-Shell-Extensions-Shell-Icon-Overlay-Handlers - TECNO
1个回答

5
不,这不是.NET。Shell编程属于非托管的C/C++领域。Shell32.dll有一个类型库,使得一些函数可以被脚本语言和.NET使用。但IShellIconOverlay接口继承自IUnknown,无法被脚本访问。从技术上讲,这是可能的,但你需要在C#中重新声明接口,使用SDK的ShlObj.h头文件中的声明作为模板。可能已经有人做过了,但尝试让它工作并不常见。快速的谷歌搜索没有找到有用的信息。
希望.NET 4.0能够恢复一些活动,并解决CLR版本注入问题。我还没有看到任何迹象。

.NET 4.0已经发布了,现在可以使用了吗? - EaterOfCode
这从来不是“不可能的”。自从我发布这篇文章以来,没有任何变化,.NET 4.0也没有恢复活动。可能是因为微软宣布不再支持它。 - Hans Passant
1
.NET完全支持所有这些功能,我快要完成所有标准扩展的实现,图标覆盖在这里:http://www.codeproject.com/Articles/545781/NET-Shell-Extensions-Shell-Icon-Overlay-Handlers - Dave Kerr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接