获取文件、文件夹或驱动器的关联图标,无需WinAPI

7

有没有一种方法在C#中获取关联的图标而不使用任何DllImports?

当我使用Icon.ExtractAssociatedIcon时,似乎无法获得驱动器、文件夹、环境中的SpecialFolder或网络附加文件夹中的任何文件的图标。所以是否有其他使用.NET获取图标的方法?


这篇带有代码的CodeProject文章可能会有所帮助。从EXE或DLL文件中提取图标 - Nifle
如果你下载他的源代码,他使用了DllImport("kernel32"...). 我希望我的代码能够在非Windows系统上使用(而不必改变很多带有#if语句的代码)。 - Patrick
我怀疑是否有一种跨操作系统提取图标的便携方式。 - Nifle
Java是可移植的,就我所知,Java可以提取各种类型的图标,或者我错了吗? - Patrick
2个回答

4

.Net只有一种提取相关图标的方法,你已经提到了它。每个库都使用pinvokes,因为它们从Windows获取图标。因此,如果您需要完全可移植的图标提取引擎,您必须自己编写它(不幸的是,这是唯一的方法),并将所有系统特定的代码隐藏起来。


嗯,那真是不幸。感谢你的帮助。 - Patrick

0

这不是对你问题的回答,但可能会有用。

你可以从这个文件中获取大多数的微软Windows图标。

$VisualStudiosInstallationDirectory\Common7\VS2008ImageLibrary\VS2008ImageLibrary.zip

如果你仍在使用VS2005,请将2008替换为2005。

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