2

しばらく前に、アイコンを取得する速度を調整したシェル アイコンを取得する最速の方法を求めましたが、問題は、システム ショートカット (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;

このアイコンの代わりに表示されます...

ここに画像の説明を入力

ある種のデフォルトのショートカットアイコン...

ここに画像の説明を入力

そのショートカットファイルからシステムアイコン(最初の画像のもの)を取得する方法を知っていますか?

4

1 に答える 1