如何通过读取注册表来获取所有文件类型的ICO图标,并存到ImageList里面!!!
如题,我想通过把系统中的所有的文件类型从注册表中读取出来后,再获得那些ICO图标,然后存到ImageList里面。
或者是知道了文件的扩展名(如.txt),如何取得当前系统文本文件的ICO图标,并存放到ImageList中。[不能通过文件的路径来获取。]
如果有其它的方法也行,说出来参考一下。
[解决办法]
//把系统图标添加到ImageList中。
Procedure GetSysImageList(aImageList: TImageList);
Const
aFlags = SHGFI_SMALLICON OR SHGFI_SYSICONINDEX;
Var
SFileinfo: TShFileInfo;
begin
FillChar(SFileinfo, Sizeof(SFileinfo), #0);
aImageList.ShareImages := True; //共享图标,一定设置为True。
aImageList.DrawingStyle := dsTransparent; //设置图标的背景色透明
aImageList.Handle := ShGetFileInfo( ' ', 0, SFileInfo, SiZeof(SFileInfo), aFlags);
end;
//得到文件的图标索引
Function GetFileIconIndex(aExt: String): Integer;
Const
aFlags = SHGFI_SMALLICON OR SHGFI_SYSICONINDEX;
Var
SFileinfo: TShFileInfo;
begin
FillChar(SFileinfo, Sizeof(SFileinfo), #0);
ShGetFileInfo(Pchar(aExt), 0, SFileinfo, SizeOf(SFileinfo), aFlags);
Result := SFileinfo.iIcon;
end;