gpt4 book ai didi

delphi - 如何从系统快捷方式获取快捷方式 shell 图标?

转载 作者:行者123 更新时间:2023-12-03 00:07:20 27 4
gpt4 key购买 nike

不久前我要求了一个fastest way to get shell icon是什么调整了获取图标的速度,但问题是某些系统快捷方式(lnk文件)无法显示正确的图标。

示例之一可能是 Windows Fax and Scan.lnk 文件,如果您使用以下代码...

procedure TForm2.Button1Click(Sender: TObject);
var
Icon: TIcon;
FileInfo: TSHFileInfo;
begin
FillChar(FileInfo, SizeOf(FileInfo), 0);
SHGetFileInfo(PChar('C:\Windows Fax and Scan.lnk'), FILE_ATTRIBUTE_NORMAL,
FileInfo, SizeOf(FileInfo), SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or
SHGFI_SMALLICON);
Icon := TIcon.Create;
try
Icon.Handle := FileInfo.hIcon;
Canvas.Draw(10, 10, Icon);
finally
Icon.Free;
end;
end;

显示而不是这个图标...

enter image description here

某种默认的快捷方式图标...

enter image description here

您知道如何从该快捷方式文件中获取系统图标(第一张图片中的图标)吗?

最佳答案

SHGFI_USEFILEATTRIBUTES 尝试不访问磁盘,这意味着您可以告诉它在该文件实际存在的情况下查找 a.txt ,并且仍然为您提供通用图标.txt 文件。它可能不会给出像 this 这样的正确结果。安装后需要调用自定义图标处理程序并可能访问磁盘。由于 .lnk 文件存储图标的位置,因此如果不访问磁盘(不包括可能的缓存),则无法访问此信息。

IExtractIcon根据 MSDN,比 SHGetFileInfo 更快,但如果你真的想要速度,你应该显示通用图标并在后台线程上获取真正的图标...

关于delphi - 如何从系统快捷方式获取快捷方式 shell 图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10981088/

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