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

时间:2012-10-11 13:07:26

标签: c# windows-7 explorer

当您查看“计算机”时,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:\”)缩图

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

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

3 个答案:

答案 0 :(得分:3)

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

问题是SHGetFileInfo可以获得16x16的小型XP前风格图标,但是为了获得更大的现代Vista和Win7'Jumbo'图标,这些图标高达256x256,你需要使用更复杂的多步法。该链接提供代码。

答案 1 :(得分: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的例子)

答案 2 :(得分:0)

我相信它们已经嵌入到这里:

%SystemRoot%\system32\SHELL32.dll