gpt4 book ai didi

C#:获取文件大缩略图/预览,而不是大图标,使用 SHGetImageList 和 SHGetFileInfo,如 Windows 资源管理器

转载 作者:行者123 更新时间:2023-11-30 17:17:16 29 4
gpt4 key购买 nike

我正在使用 C#、Windows Forms、Net 2.0。

我正在使用 SHGetImageList 获取系统图像列表,比方说,SHIL_JUMBO 参数并在 Windows 7 上获取 256x256 大图像。

[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);

将系统图像列表设置为我的 ListView ,以及

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;
}

获取 ListView 中加载的不同文件/文件夹的图标索引。

一切正常,除了我得到 256 个大图标,即使是电影或图像文件,我希望缩略图(图像/电影的预览),就像在 Windows 资源管理器中一样。

如何获取缩略图,而不是 Windows 资源管理器中显示为缩略图的文件的图标?

最佳答案

在 Windows Vista 及更高版本中,您可以使用 IThumbnailProvider界面。

Windows API Code Pack 中有一个包装器.

对于 XP 有不同的界面,请参见:http://www.vbaccelerator.com/home/NET/Code/Libraries/Shell_Projects/Thumbnail_Extraction/Thumbail_Tester_Code_zip_ThumbnailTester/ThumbnailCreator_cs.asp

显然,您必须决定哪些文件将使用系统图像列表图标,哪些将使用缩略图。

关于C#:获取文件大缩略图/预览,而不是大图标,使用 SHGetImageList 和 SHGetFileInfo,如 Windows 资源管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6625124/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com