delphi如何通过扩展名获取扩展名对应的图标
时间: 2023-08-08 10:12:58 浏览: 167
VB6 根据扩展名获取图标
在 Delphi 中,你可以使用 `SHGetFileInfo` 函数来获取指定文件扩展名对应的图标。下面是一个示例代码:
```delphi
uses
ShellAPI, ShlObj, ActiveX, ComObj, Controls, Graphics;
function GetFileIcon(const FilePath: string): TIcon;
var
FileInfo: SHFILEINFO;
begin
// 初始化 COM 库
CoInitialize(nil);
try
// 获取文件图标信息
SHGetFileInfo(PChar(FilePath), 0, FileInfo, SizeOf(FileInfo),
SHGFI_ICON or SHGFI_SMALLICON or SHGFI_USEFILEATTRIBUTES);
// 创建 TIcon 对象,并将图标信息赋值给 TIcon.Handle
Result := TIcon.Create;
Result.Handle := FileInfo.hIcon;
finally
// 释放资源
DestroyIcon(FileInfo.hIcon);
CoUninitialize;
end;
end;
```
使用示例:
```delphi
procedure TForm1.Button1Click(Sender: TObject);
var
Icon: TIcon;
begin
Icon := GetFileIcon('C:\path\to\file.txt');
try
// 使用图标
Image1.Picture.Icon := Icon;
finally
// 释放图标资源
Icon.Free;
end;
end;
```
在上面的示例中,`GetFileIcon` 函数接收文件路径作为参数,使用 `SHGetFileInfo` 函数获取文件的图标信息,并将图标信息赋值给 `TIcon` 对象。然后,可以将图标显示在 `TImage` 控件上或者进行其他操作。
请注意,在使用 `GetFileIcon` 函数之前需要调用 `CoInitialize` 来初始化 COM 库,并在使用完毕后调用 `CoUninitialize` 释放资源。同时,还需要在程序中使用 `ShellAPI`、`ShlObj`、`ActiveX` 和 `ComObj` 单元。
阅读全文