相关疑难解决方法(0)

C#通过windows api从文件中获取缩略图

Windows资源管理器可以显示文件的缩略图.这些缩略图由核心和第三方shell扩展提供.

我知道如何扩展shell以向Windows提供缩略图.

我想要做的是使用C#通过shell从系统上的任何文件中检索缩略图.这可能吗?

本质上,我正在编写一个自定义文件浏览器,我想显示缩略图,并且无法解析地球上的每个文件以制作我自己的缩略图.

澄清:许多答案似乎都围绕网页缩略图或缩放图像.但这根本不是我想要的.我想要的是向Windows询问这些文件类型的缩略图:.DOC,.PDF,.3DM,.DWG ......和mabye大约十几个.我不想自己解析,渲染和制作缩略图,因为Windows已经知道如何.

我作为答案发布的代码实际上有用......也许它可以简化并清理一下.

c# windows-shell

69
推荐指数
3
解决办法
6万
查看次数

SHGetImageList - SHIL_JUMBO用于较小的图标(32,32)

在我的代码中,我通过函数SHGETImageList获得了一个大小为SHIL_JUMBO的图像列表.

 IImageList iml;
 var hres = SHGetImageList(SHIL_JUMBO, ref iidImageList, out  iml);
 IntPtr hIcon = IntPtr.Zero;
 iml.GetIcon(i, ILD_TRANSPARENT |  ILD_IMAGE, ref hIcon);

 Icon ico =  (Icon)System.Drawing.Icon.FromHandle(hIcon).Clone();
 ShellAPI.DestroyIcon(hIcon);
Run Code Online (Sandbox Code Playgroud)

一切都还可以,但是当它必须得到更小的图标时(当它们的大小不是256x256时),GetIcon函数会返回一个大小为256x256的图标,但左上角的图标大小为32x32.我想将此图标调整为新大小(256 x 256).

我没有任何关于如何让系统将我的图标大小调整为256 x 256的信息.对于这个大小,iml中的每个函数(如GetImageInfo,GetImageRect)都返回一个空结构.

可以获得此图标较小的信息,我可以从其他来源获取图标.

c# icons windows-vista

17
推荐指数
1
解决办法
3203
查看次数

提取文件的高分辨率图标或缩略图

我正在尝试在Windows中获得高分辨率图标或缩略图,给出该文件的完整路径.并不需要成为一个缩略图-一个漂亮的图标将是巨大的.我不在乎它是一个HICON还是一个HBITMAP:我将把它放在一个GDI +对象中并将其渲染到一个设备上下文中.

我已经尝试使用SHGetFileInfo(与标志的各种变化),但从来没有得到超过32×32〜图标回来了,这可怕扩展到128个像素左右,我需要更多.

if (!SHGetFileInfoW(path, 0, &fi, sizeof(fi),
                    SHGFI_ICON | SHGFI_ICONLARGE | SHGFI_TYPENAME))
    return GetLastError();

// fi.hIcon is a valid icon here, but it's horrible quality with
// a black mask on it. I want higher quality, and dare I dream of
// alpha channel? Mask is acceptable, i suppose.
Run Code Online (Sandbox Code Playgroud)

SHGetFileInfo""当我打电话时返回SHGFI_ICONLOCATION(这似乎是该API的已知问题).

我已经使用也试过SHCreateItemFromParsingName名称与得到的意图IThumbnailProvider,但BindToHandler总是返回E_NOTIMPLBHID_ThumbnailHandler...

IShellItem *psi;
hr = SHCreateItemFromParsingName(path, NULL, …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi

10
推荐指数
1
解决办法
3507
查看次数

标签 统计

c# ×2

c++ ×1

icons ×1

winapi ×1

windows ×1

windows-shell ×1

windows-vista ×1