【发布时间】:2012-03-03 01:00:08
【问题描述】:
我正在使用此代码获取 shell 图标(显示在 Windows 资源管理器中的那个)。
有没有人有更快的方法来获取这些图标的经验? SHGetFileInfo 似乎很慢。
procedure TForm2.Button1Click(Sender: TObject);
var
FileInfo: TSHFileInfo;
begin
FillChar(FileInfo, SizeOf(FileInfo), 0);
if SHGetFileInfo(PChar('c:\windows\'), 0, FileInfo, SizeOf(FileInfo),
SHGFI_ICON or SHGFI_SMALLICON or SHGFI_SYSICONINDEX) <> 0 then
DrawIconEx(Canvas.Handle, 10, 10, FileInfo.hIcon, 0, 16, 16, 0, DI_IMAGE or
DI_MASK);
end;
谢谢!
【问题讨论】:
-
我过去使用过这种方法,在 C++ 应用程序中没有任何问题。不过有一点不同,我只使用了标志
SHGFI_ICON和SHGFI_USEFILEATTRIBUTES。 -
是的,如果速度是一个问题,一定要使用
SHGFI_USEFILEATTRIBUTES。这样,SHGetFileInfo()会跳过查询实际文件的属性,这可能需要一些时间。
标签: windows delphi winapi shell icons