Это довольно стандартный код:Скачать иконку WPF код не работает на CD-ROM
public static System.Windows.Media.Imaging.BitmapSource GetIcon(string Path, int Width = 256, int Height = 256)
{
IShellItem ppsi = null;
IntPtr hbitmap = IntPtr.Zero;
Guid uuid = new Guid("43826d1e-e718-42ee-bc55-a1e261c37bfe");
SHCreateItemFromParsingName(Path, IntPtr.Zero, uuid, ref ppsi);
((IShellItemImageFactory)ppsi).GetImage(new SIZE(Width, Height), SIIGBF.SIIGBF_RESIZETOFIT, ref hbitmap);
return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hbitmap, IntPtr.Zero, System.Windows.Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
}
Он работает все время, кроме случаев, когда пытаются увидеть значки (в частности, WMV) иконки на компакт-диске. Нужно ли больше времени для загрузки? Или что-то ... У объекта Bitmapsource есть событие «загрузки». Но я прошел через код, и это не ударит.
Возможно, это также может быть проблемой «кэширования». Но странно только влияет на иконки CD-Rom?