如何获得系统图标(50)

  • 主题发起人 主题发起人 linuxping
  • 开始时间 开始时间
L

linuxping

Unregistered / Unconfirmed
GUEST, unregistred user!
每种格式的文件在操作系统里都注册有一个图标。比如:如果你安装了zip解压软件,那么,zip文件就会使用zip图标。如果你安装了delphi,那么每个pas文件,就会使用borland女神图标。现在,我任意给一种文件格式,我怎么获得它在系统中的图标?
 
假设文件扩展名为***打开注册表项 HKEY_CLASSES_ROOT/.*** 注意扩展名前的点号读取它的默认键值 ******然后打开注册表项HKEY_CLASSES_ROOT/******/DefaultIocn默认键值就是图标路径了。这个图标可以是某个PE文件的资源
 
function MyGetFileIcon(const AFileName: string; ASmallIcon: Boolean): HICON;var Info: TSHFileInfo; Flag: Integer; Attrs: DWORD;begin if ASmallIcon then Flag := (SHGFI_SMALLICON or SHGFI_ICON) else Flag := (SHGFI_LARGEICON or SHGFI_ICON); Attrs := FILE_ATTRIBUTE_NORMAL; ShellAPI.SHGetFileInfo(PChar(AFileName), Attrs, Info, sizeof(Info), Flag); Result := Info.hIcon;end;procedure TForm1.Button1Click(Sender: TObject);begin Image1.Picture.Icon.Handle := MyGetFileIcon('C:/1.zip', False);end;
 
我有做过.
 
Delphizhou 谁啊我也有一个同学,做delphi,姓周,好几年没联系了
 
请问一下,在那里可以找到比较全得delphi函数大全
 
user ShellAPI;//全局变量SHFileInfo:TSHFileInfo;//私有变量myImageList:TImageList;function GetFileIconIndex(FileName:string):integer; begin ShGetFileInfo(Pchar(FileName), 0, SHFileInfo,SizeOf( SHFileInfo), SHGFI_LARGEICON or SHGFI_SYSICONINDEX or SHGFI_TYPENAME or SHGFI_SMALLICON); Result:=SHFileInfo.iIcon; end;function LoadSysIco():boolean; var FStream:TFileStream; i:integer; begin MyImageList:=TImageList.CreateSize(32,32); myImageList.ShareImages:=True; myImageList.Handle:=ShGetFileInfo('',0,SHFileInfo, SizeOf(SHFileInfo),SHGFI_LARGEICON or SHGFI_ICON or SHGFI_SYSICONINDEX or SHGFI_SMALLICON); ListView1.SmallImages:=myImageList; ListView1.LargeImages:=myImageList; for i:=0 to ListView1.Items.Count-1 do begin FStream:=TFileStream.Create('c:/'+ListView1.Items.Caption,fmCreate); FStream.Write(i,sizeof(integer)); FStream.Free; ListView1.Items.Item.ImageIndex:=GetFileIconIndex('c:/'+ListView1.Items.Caption); deletefile('c:/'+ListView1.Items.Caption); end;
 
注册表里增加或者改下,,像地质灾害说的那样
 
是通过该注册表,来进行文件关联的~~~
 
后退
顶部