孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

提取图标到ImageList

const
  SFile='D:\windows\system32\shell32.dll';
var
 i:integer;
 Count:integer;
 hIcon:HWND;
 icon:TICON;
begin
 Count :=-1;
 Count :=ExtractIcon(HInstance,SFile,Count);
 icon :=TICon.Create;
 try
  for i:=0 to Count-1 do
  begin
   hIcon :=ExtractIcon(HInstance,SFile,i);
   icon.Handle :=hIcon;
   imgList.AddIcon(icon);
   lstView.Items.Add.ImageIndex :=i;
  end;
 finally
  icon.Free;
 end;
end;  

提取图标并保存到本地
function GetFileIcon(const Filename:string;SmallIcon:Boolean):HICON;
var
 info:TSHFILEINFO;
 Flag:Integer;
begin
 if SmallIcon then
  Flag :=(SHGFI_SMALLICON or SHGFI_ICON)
 else
   Flag :=(SHGFI_LARGEICON or SHGFI_ICON);
  SHGetFileInfo(PChar(Filename),0,Info,Sizeof(info),flag);
 Result :=info.hIcon;
end;

procedure TForm1.Button1Click(Sender:TObject)
var
 icon:HICON;
 myicon:TIcon;
begin
 icon :=GetFileIcon('E:\...\1.exe',False);
 myicon :=TIcon.Create;
 myicon.Handle :=icon;
 myicon.SaveToFile('D:\s1.ico');
 DrawIconEx(Image1.Canvas.handle,10,10,icon,0,0,0,0,DI_NORMAL);
 myicon.Free;
end; 

posted on 2011-07-08 20:12  孤独的猫  阅读(368)  评论(0编辑  收藏  举报