Sorry, hab natürlich dein Problem nur etwas falsch verstanden. Dachte du bekommst generell nur 16x16 oder 32x32 (dachte halt auch an die größeren 48x48 usw) und hab deshalb nicht gesehen, dass du mit ExtractIconEx, diese beiden Icons hast.
Na ja, dann musst du es so machen (sorry, wieder nicht all zu schön, könnte ein FreeHandle fehlen!)
Delphi-Quellcode:
var ico : TIcon;
i : Integer;
iconCount : HICON;
begin
ico := TIcon.Create;
iconCount := 0;
if OpenDialog1.Execute then
begin
ico := TIcon.Create;
// auslesen der Anzahl der vorhandenen Icons (durch -1 und (iconCount = 0)
iconCount := ExtractIconEx(PChar(OpenDialog1.FileName), -1, iconCount, iconCount, 0);
// alle Icons durchschauen
// eventuell auch Speicher wieder freigeben
for i := 0 to iconCount - 1 do
begin
ico.Handle := ExtractIcon(Application.Handle, PChar(OpenDialog1.FileName), i);
if ico.Width = ... then
begin
end; //
end;
end;
So sollte es gehen,
Gruß Der Unwissende