Извлечь правильный значок 16x16, назначенный для файла?

Я связал SHGetFileInfo и ExtractIconEx, оба возвращают нормальный значок 32x32 и 16x16 только с 16 цветами, и это выглядит ужасно. Как извлечь полноцветный значок?

Мой код

SHFILEINFO shinfo = new SHFILEINFO();
IntPtr hImgSmall = SHGetFileInfo(fileName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), SHGFI_ICON | SHGFI_SMALLICON);
Icon icon = (Icon)System.Drawing.Icon.FromHandle(shinfo.hIcon).Clone();
DestroyIcon(shinfo.hIcon);

3 ответа

Я попробовал этот пример текст ссылки и работает..... получил 16*16 с альфа-каналом. Попытайся.

Вы пробовали следующее?

Icon LargeIcon = Icon.ExtractAssociatedIcon(fileName);
Icon SmallIcon = new Icon(LargeIcon, 16, 16);

Вы можете найти рабочие инструкции здесь: http://support.microsoft.com/?scid=kb;en-us;319350&x=14&y=9

Другие вопросы по тегам