如何获取在Windows资源管理器中使用的驱动器图标?

6

当你查看“计算机”时,Windows 7为每个驱动器提供非常漂亮的图标。它会为CD、SD卡、USB闪存驱动器和USB硬盘等设备放置正确的图标。

它的样子是这样的:

Driving

我想要访问这些图标并在我的UI中使用正确的图标。我尝试了各种方法来访问文件夹图标和文件图标,但是没有任何作用。不起作用的方法有:
  • Icon.ExtractAssociatedIcon("F:\")

  • SHGetFileInfo("F:\", 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON);

  • ShellObject.FromParsingName("F:\").Thumbnail

我还能尝试什么,或者我做错了什么?

编辑:我不是在寻找图标来源,我正在尝试获取每个驱动器的正确图标。


当你说你的解决方案不起作用时,它们实际上返回哪些图标? - SirDarius
ExtractAssociatedIcon和ShellObject会抛出异常,因为驱动器不是文件。SHGetFileInfo返回低分辨率的通用图标,而不是每个驱动器特定的图标。 - Sugrue
3个回答

4

链接已过期。 - Dominic Jonas

2
你应该注意使用哪些图标,因为其中许多图标可能没有获得授权。但是你可以使用在以下路径下找到的图标: (Visual Studio 2010 示例)
或 (Visual Studio 2005 示例)

谢谢。我想我的真正问题是如何知道为每个驱动器使用哪个图标? - Sugrue

0

我相信它们嵌入在这里:

%SystemRoot%\system32\SHELL32.dll

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