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