En mi código consigo una lista de imágenes a través de la función SHGETImageList con el tamaño SHIL_JUMBO.SHGetImageList - SHIL_JUMBO para iconos más pequeños (32,32)
IImageList iml;
var hres = SHGetImageList(SHIL_JUMBO, ref iidImageList, out iml);
IntPtr hIcon = IntPtr.Zero;
iml.GetIcon(i, ILD_TRANSPARENT | ILD_IMAGE, ref hIcon);
Icon ico = (Icon)System.Drawing.Icon.FromHandle(hIcon).Clone();
ShellAPI.DestroyIcon(hIcon);
todo está bien, pero cuando se tiene que conseguir iconos más pequeños (cuando no tienen un tamaño de 256x256) la función GetIcon me devuelve un icono con el tamaño de 256x256, pero con el icono de tamaño 32x32 en la esquina superior izquierda. Quiero cambiar el tamaño de este icono al nuevo tamaño (256 x 256).
No tengo ninguna información sobre cómo hacer para que el sistema cambie el tamaño de mi icono a 256 x 256. Todas las funciones en iml (como GetImageInfo, GetImageRect) para este tamaño devuelven una estructura vacía.
Es posible obtener información de que este ícono es más pequeño y que puedo obtener ícono de otra fuente.
Estoy teniendo exactamente el mismo problema. Me vuelve loco. Atacando el problema desde la otra dirección: ¿Hay alguna forma de detectar si hay un icono Jumbo o no? – MarcWan
¿Qué valor de i te da esto? ¿Estás seguro de que no es porque son simplemente imágenes superpuestas? –