System.Windows.Media.Imaging.BitmapSource это PresentationCore.dll (Framework не ниже 3.5). У меня приложение под Framework 2.0. Использовать SHGetFileInfo пробовал:
public static System.Drawing.Icon GetFolderIcon(IconSize size, FolderType folderType)
{
...
// Get the folder icon
Shell32.SHFILEINFO shfi = new Shell32.SHFILEINFO();
Shell32.SHGetFileInfo(null,
Shell32.FILE_ATTRIBUTE_DIRECTORY,
ref shfi,
(uint)System.Runtime.InteropServices.Marshal.SizeOf(shfi),
flags);
System.Drawing.Icon.FromHandle(shfi.hIcon); // Load the icon from an HICON handle
// Now clone the icon, so that it can be successfully stored in an ImageList
System.Drawing.Icon icon = (System.Drawing.Icon)System.Drawing.Icon.FromHandle(shfi.hIcon).Clone();
User32.DestroyIcon(shfi.hIcon); // Cleanup
return icon;
}
}
Но для папок такой код возвращает неправильную картинку (показал бы ,но не знаю как добавить картинку). Причём для всех одинаковую.