如何获取桌面图标?

汤姆

我想从某些系统目录(例如“桌面”)中获取图标。但是,相反,我正在获取“默认文件”的图标。

function GetSpecialFolderPath(CSIDLFolder: Integer): string;
var  FilePath: array [0..MAX_PATH] of char;
begin
  SHGetFolderPath(0, CSIDLFolder, 0, 0, FilePath);
  Result := FilePath;
end;

function GetSystemFileIcon(FolderID: Integer): TIcon;
var
  AInfo: TSHFileInfo;
  AIcon: TIcon;
  Ext: PAnsiChar;
  Path: String;
begin
  Path := GetSpecialFolderPath(FolderID);

  if Path = '' then begin
    Result := nil;
    Exit;
  end;  

  if SHGetFileInfo(PChar(Path), FILE_ATTRIBUTE_NORMAL, AInfo, SizeOf( AInfo ),
    SHGFI_ICON or SHGFI_LARGEICON or SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_OPENICON ) <> 0 then
  begin
    AIcon := TIcon.Create;
    try
      AIcon.Handle := AInfo.hIcon;
      Result := AIcon;
    except
      AIcon.Free;
      raise;
    end;
  end
  else
    Result := nil;
end;

var Ico: TIcon;
begin
  Ico :=  GetSystemFileIcon(CSIDL_DESKTOPDIRECTORY);
汤姆

此属性需要删除:

SHGFI_USEFILEATTRIBUTES

然后就可以了

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取特定桌面图标的GUID?

来自分类Dev

如何获取特定桌面图标的GUID?

来自分类Dev

如何自动排列桌面图标?

来自分类Dev

如何制作桌面图标?

来自分类Dev

如何制作桌面图标?

来自分类Dev

如何自动排列桌面图标?

来自分类Dev

如何隐藏桌面图标?

来自分类Dev

如何更改桌面图标大小?

来自分类Dev

如何安装 MATE 桌面图标?

来自分类Dev

简单的桌面图标

来自分类Dev

删除桌面图标

来自分类Dev

桌面图标-创建

来自分类Dev

重复的桌面图标

来自分类Dev

如何制作透明的桌面图标(如Firefox图标)

来自分类Dev

如何从终端中删除桌面图标?

来自分类Dev

如何删除所有桌面图标

来自分类Dev

如何制作桌面图标以启动程序?

来自分类Dev

如何删除所有桌面图标

来自分类Dev

如何更改桌面图标文字的颜色

来自分类Dev

如何阻止Windows移动桌面图标?

来自分类Dev

如何从终端中删除桌面图标?

来自分类Dev

如何将桌面图标标题放置在中心?

来自分类Dev

如何自动在右侧对齐桌面图标?

来自分类Dev

如何将书签更改为桌面图标?

来自分类Dev

如何调整/隐藏桌面图标上的箭头?

来自分类Dev

如何调整桌面图标的大小?

来自分类Dev

如何删除Xubuntu中的桌面图标?

来自分类Dev

如何在 Disco Dingo 中组织桌面图标

来自分类Dev

如何更改桌面图标文字的颜色