提取图标到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;