I am trying to make icon extractor
i am successful in getting icon to image1.picture.icon ,its looking same as orginal file icon,
but when i am trying to save (iamge1.picture.icon.savetofile(c:\imahe.ico))
its not saving as it is ,it saving with less colur and looking ugly
cany any one please tell me what i am doing wrong ?
here is my code
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Filter:='All files |*.*';
OpenDialog1.Title:='Please select file';
if OpenDialog1.Execute then
Edit1.Text:=OpenDialog1.FileName;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
szFileName: string;
Icon: TIcon;
SHInfo: TSHFileInfo;
begin
szFileName := Edit1.Text;
if FileExists(Edit1.Text) then
begin
Icon := TIcon.Create;
SHGetFileInfo(PChar(szFileName), 0, SHInfo, SizeOf(SHInfo), SHGFI_ICON);
Icon.Handle := SHInfo.hIcon;
Image1.Picture.Icon := Icon;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
Image1.Picture.Icon.SaveToFile(SaveDialog1.FileName+'.ico');
ShowMessage('done');
end;
end;
the SHGetFileInfo function has multiples flags to obtain different icons sizes.
you can use this flags in this way
for more info you can check the answer to this question.
Can 48×48 or 64×64 icons be obtained from the Vista Shell