怎样区分exe、dll文件中的图标,是16色、256色还是...(100分)

  • 主题发起人 主题发起人 111222
  • 开始时间 开始时间
1

111222

Unregistered / Unconfirmed
GUEST, unregistred user!
本人编了一个图标搜索器http://guanbh.top263.net/download/allicon.exe
有一点不足:不能区分图标是16色还是其它。

t:Ticon;
t.Handle:=extracticon(handle,pchar(图标文件名),i);
方式1
t.SaveToFile('1.ico'); --->得到16色图标文件1.ico
方式2
image1:=Timage.create(self);
DrawIcon(image1.canvas.Handle,0,0,t.Handle);
image1.picture.SaveToFile('1.ico');--->得到图标文件1.ico的颜色同windows相同。
 
.ico文件的前$22为它的格式头,
读出
h:=FileOpen('1.ico',fareadonly);
FileSeek(h,0,0);
FileRead(h,IconHead,$22);
IconHead.Color就是你要的
其中IconHead为一个纪录变量
格式你要察看资料,好像程序员大本营有
代码我没有测试,应为我在网把,没有条件
你可以自己测试看看.
 
如楼上所说,判断图标的颜色位数,你可以读取文件头;
另一个方法是将.icoh转化为.bmp,利用BMP.PIXELFORMAT属性来判断颜色位数。
if BMP.PIXELFORMAT=pf4bit then
ShowMessage('图标为16色');
 
请问哪里有关于.ico文件格式的介绍?
 
接受答案了.
 
后退
顶部