我正在开发一个基于外壳的列表视图。尝试提取外壳图标/图像时...如果失败,我尝试使用 IExtractImage 提取缩略图我尝试使用 IExtractIcon 提取图标,以获得最大的图标大小,但 IExtractIcon 给出奇怪的结果。问题是我尝试使用从图像列表中提取图标的方法,但如果没有大图标(256x256),它将在图标的左上角呈现较小的图标,这看起来不太好。这就是为什么我尝试改用 IExtractIcon 的原因。但是在我的图像列表提取方法中显示为 256x256 图标的图标报告图标大小为 33 大和 16 小。那么如何检查是否存在大(256x256)图标?如果您需要更多信息,我可以提供一些示例代码。
if PThumb.Image = nil then
begin
OleCheck(ShellFolder.ParseDisplayName(0, nil, StringToOleStr(PThumb.Name), Eaten, PIDL, Atribute));
ShellFolder.GetUIObjectOf(0, 1, PIDL, IExtractIcon, nil, XtractIcon);
CoTaskMemFree(PIDL);
bool:= False;
if Assigned(XtractIcon) then
begin
GetLocationRes := XtractIcon.GetIconLocation(GIL_FORSHELL, @Buf, sizeof(Buf), IIdx, IFlags);
if (GetLocationRes = NOERROR) or (GetLocationRes = E_PENDING) then
begin
Bmp := TBitmap.Create;
try
OleCheck(XtractIcon.Extract(@Buf, IIdx, LIcon, SIcon, 32 + (16 shl 16)));
Done:= False;
罗伊·M·克莱弗