导航

心动吧DELPHI网络书

自发研究:须要多维思想而且要想不可能为可能的人才能做到

« 建立文件类型关联获取和修改文件时间 »

获取同文件关联的图标

获取同文件关联的图标
   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

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热文排行使用

本年排行使用

本月排行使用

网站分类

搜索内容

最新评论及回复

最近发表

所属分类下的文章

日历

Copyright ⊙ 2004-2009 心动吧 UrL:ABCXD.CoM All RiGhts Reserved