しばらく前に、アイコンを取得する速度を調整したシェル アイコンを取得する最速の方法を求めましたが、問題は、システム ショートカット (lnk ファイル) の一部が正しいアイコンを表示しないことです。
例の 1 つとして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;
このアイコンの代わりに表示されます...
ある種のデフォルトのショートカットアイコン...
そのショートカットファイルからシステムアイコン(最初の画像のもの)を取得する方法を知っていますか?