我使用此代碼獲取shell圖標(在Windows資源管理器中顯示的圖標)。
有沒有人有更快的方式獲得這些圖標的經驗? SHGetFileInfo
似乎很慢。獲取shell圖標的最快方法
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'。 – alf 2012-02-10 15:20:23
是的,如果速度有問題,一定要使用'SHGFI_USEFILEATTRIBUTES'。因此,'SHGetFileInfo()'跳過查詢實際文件的屬性,這可能需要一些時間。 – 2012-02-10 21:06:17