Cargando iconos de Shell32.dll: Win32 mango no es válido o no es el tipo incorrecto
Pregunta
Me estoy haciendo algunos iconos de la Shell32.dll. Aunque incluya algunos de los iconos no parece estar disponible, y no puedo entender por qué.
Me estoy haciendo el icono mediante la carga de la biblioteca llamando a:
[DllImport("kernel32.dll")]
static extern IntPtr LoadLibrary(string Library);
y luego conseguir el icono llamando a:
[DllImport("User32.dll")]
public static extern IntPtr LoadImage(IntPtr ptr, int intId, uint intType, int iconWidth, int iconHeight, int loadIcon);
envío en el índice de icono del icono que estoy recibiendo, que funciona bien para icpons tal como el icono Abrir carpeta (índice 5) y el icono de inicio de sesión (índice 45) pero cuando intento y consigo iconos en el índice (71 , 73, 127, etc, etc) me sale el siguiente excepción: manija de Win32 que se ha pasado del icono no es válido o no es el tipo incorrecto
Me preguntaba si alguien sabía qué estaba pasando esto? y por qué algunos de los iconos son accesibles y otros no aparecen.
Gracias
Solución
¿Por qué algunos de los iconos son accesibles y otros no aparecen.
Debido a que los iconos no son parte del contrato público de Shell32.dll.
No se debe confiar en los iconos de carga de Shell32.dll de todos modos. Raymond Chen explica por qué, aunque no puedo encontrar el artículo.