2012-10-11 19 views
5

Windows 7 tiene iconos muy bonitos para cada unidad cuando ve "Computadora". Se pone el icono de la derecha para CD, tarjetas SD, memorias USB, discos duros USB, etc.¿Cómo obtener los íconos de unidad como se usan en Windows Explorer?

se ve así:

Driving

me gustaría tener acceso a esos iconos y utilizar los correctos en mi UI He intentado varios métodos para acceder a iconos de carpetas e íconos de archivos, pero nada funciona. Lo que no funciona:

  • Icon.ExtractAssociatedIcon ("F: \")

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

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

¿Qué más puedo intentar I, o ¿qué estoy haciendo mal?

EDITAR: No estoy buscando una fuente de iconos, estoy tratando de obtener el icono correcto para cada unidad.

+0

Cuando dice que sus soluciones no funcionan, ¿qué iconos realmente devuelven? – SirDarius

+0

ExtractAssociatedIcon y ShellObject arrojan excepciones porque la unidad no es un archivo. SHGetFileInfo devuelve un icono genérico de baja resolución, no el icono específico para cada unidad. – Sugrue

Respuesta

3

Después de un montón de excavación, me encontré con este : http://tabbles.net/blog/how-to-have-large-file-icons-with-shgetfileinfo-in-c/

El problema es que SHGetFileInfo puede obtener iconos de estilo pequeños, pre-XP, que son 16x16, pero para obtener los iconos modernos más grandes Vista y Win7 'Jumbo', que son hasta 256x256, necesita utilizar múltiples más complejos método de paso El enlace proporciona código.

0

Creo que están incrustadas en aquí:

%SystemRoot%\system32\SHELL32.dll 
+1

gracias, pero ¿cómo sé cuál usar para cada unidad? – Sugrue

2

Usted debe tener cuidado con lo utiliza iconos, ya que muchos de ellos no puede obtener licencia. Pero seguro que se le permite utilizar las que se encuentran bajo

c: \ Archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ VS2010ImageLibrary \ 1033 \ VS2010ImageLibrary.zip (ejemplo para Visual Studio 2010)

o

c: \ archivos de programa (x86) \ Microsoft Visual Studio 8 \ Common7 \ VS2005ImageLibrary \ VS2005ImageLibrary.zip (exampel para Visual Studio 2005)

+0

Gracias. Supongo que mi verdadera pregunta es cómo saber qué icono usar para cada unidad. – Sugrue

Cuestiones relacionadas