获取同文件关联的图标
WINSHELLAPI DWORD WINAPI SHGetFileInfo(
LPCSTR pszPath,
DWORD dwFileAttributes,
SHFILEINFO FAR *psfi,
UINT cbFileInfo,
UINT uFlags
);
它的作用是:取回文件系统中的一个对象的信息,对象可以是文件、文件夹、
目录或驱动器的根目录。经过三个多小时的调试,我终于完全弄明白怎样取
得并显示一个文件的图标了:包括大图标、小图标,象资源管理器上的那样。
操作过程大体如下:
var ShFileInfo: TSHFILEINFO;
FileList:TListView;
begin
...
Result := FileList.Items.Add;
with Result do
begin
Caption:=filename;
ShGetFileInfo(pchar(vartostr(filename)), 0, SHFileInfo, SizeOf(SHFileInfo),
SHGFI_SMALLICON or SHGFI_SYSICONINDEX or SHGFI_TYPENAME)=0 then
showmessage('error in shgetfileinfo');
ImageIndex := SHFileInfo.iIcon;
end;
...
end;
这是最关键的几个地方,中间省略了许多细节。
另:我在6月17日的笔记里提到ExtractAssociatedIcon()和ExtractIcon()函数,
也可以提取文件的图标,但是速度比这个方法要慢上许多,而且我不会用它们提
取小图标。
//////////////////////////////////////////////////////////////
uses ShellApi;
procedure TForm1.Button1Click(Sender: TObject);
var
Icon : hIcon;
IconIndex : word;
begin
Icon := ExtractAssociatedIcon(HInstance,
'C:\SomePath\SomeFile.ext',
IconIndex);
DrawIcon(Form1.Canvas.Handle, 10, 10, Icon);
end;
原创文章如转载,请注明:转载自心动吧DELPHI网络书 [ http://www.abcxd.com/delphi/ ]
本文链接地址:http://www.abcxd.com/delphi/abcxddelphi/delphiDIRAA/252.html