procedure TForm1.Button1Click(Sender: TObject);
const
FileIcons = 'C:\Windows\System32\Shell32.dll';
var
Icon : TIcon;
Image : TImage;
NumberOfIcons, i : Integer;
begin
Icon := TIcon.Create;
Image := TImage.Create(Self);
try
NumberOfIcons := ExtractIcon(Handle, PChar(FileIcons), UINT(-1));
for i := 0 to NumberOfIcons - 1 do
begin
Icon.Handle := ExtractIcon(Handle, PChar(FileIcons), i);
Image.Picture.Assign(Icon);
Image.Picture.SaveToFile(ExtractFilePath(Application.ExeName) + 'Icon-' + IntToStr(i) + '.ico');
end;
finally
Icon.Free;
Image.Free;
end;
end;