6

当您查看“计算机”时,Windows 7 的每个驱动器都有非常漂亮的图标。它为 CD、SD 卡、U 盘、USB 硬盘等放置了正确的图标。

它看起来像这样:

驾驶

我想访问这些图标并在我的 UI 中使用正确的图标。我尝试了各种访问文件夹图标和文件图标的方法,但没有任何效果。什么不起作用:

  • Icon.ExtractAssociatedIcon("F:\")

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

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

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

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

4

3 回答 3

4

经过大量挖掘,我发现了这个:https ://tabbles.net/how-to-have-large-file-icons-with-shgetfileinfo-in-c/

问题是 SHGetFileInfo 可以得到 16x16 的 XP 之前的小图标,但要得到更大的现代 Vista 和 Win7 'Jumbo' 图标,最高可达 256x256,你需要使用更复杂的多步骤方法。该链接提供代码。

于 2012-10-12T15:42:37.690 回答
2

您应该小心您使用的图标,因为其中很多都无法获得许可。但是你肯定可以使用你在下面找到的那些

c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\1033\VS2010ImageLibrary.zip(Visual Studio 2010 的示例)

或者

c:\Program Files (x86)\Microsoft Visual Studio 8\Common7\VS2005ImageLibrary\VS2005ImageLibrary.zip(Visual Studio 2005 的示例)

于 2012-10-11T13:10:33.720 回答
0

我相信它们嵌入在这里:

%SystemRoot%\system32\SHELL32.dll
于 2012-10-11T13:10:14.730 回答