C #: получение файлов больших эскизов / превью вместо больших значков с помощью SHGetImageList и SHGetFileInfo, например Windows Explorer

Я использую 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.

Как я могу получить эскизы, а не значки для файлов, которые отображаются в виде эскизов в проводнике Windows?


person Alex Vang    schedule 08.07.2011    source источник


Ответы (1)