Я использую C #, Windows Forms, Net 2.0.
Я использую SHGetImageList для получения списка системных образов, скажем, с параметром SHIL_JUMBO, и для получения больших изображений 256x256 в Windows 7.
[DllImport(SHELL32, EntryPoint = "#727")]
public static extern int SHGetImageList(int imageList, ref Guid riid, ref IntPtr handle);
public static IntPtr Get(SystemImageListType type)
{
IntPtr handle = IntPtr.Zero;
NativeMethods.SHGetImageList((int)type, ref NativeMethods.IIDImageList, ref handle);
return handle;
}
Я также использую
NativeMethods.SendMessage(listView.Handle, LVM_SETIMAGELIST, LVSIL_NORMAL, imageListHandle);
, чтобы установить системный список изображений для моего списка, и
public static int GetFileIconIndex(string pathName)
{
NativeMethods.SHFILEINFO shfiData = new NativeMethods.SHFILEINFO();
NativeMethods.SHGetFileInfo(
pathName,
0,
ref shfiData,
Marshal.SizeOf(typeof(NativeMethods.SHFILEINFO)),
NativeMethods.SHGFI.SYSICONINDEX |
NativeMethods.SHGFI.LARGEICON |
NativeMethods.SHGFI.ICON );
return shfiData.iIcon;
}
для получения индекса значков различных файлов / папок, загруженных в просмотр списка.
Все работает отлично, за исключением того, что я получаю большие 256 значков даже для фильмов или файлов изображений, где я ожидаю миниатюру (предварительный просмотр изображения / фильма), как в Windows Explorer.
Как получить миниатюры, а не значки файлов, которые отображаются в виде миниатюр в проводнике Windows?