Thema: Delphi Extraktion von Icons

Einzelnen Beitrag anzeigen

Vroomfondel

Registriert seit: 12. Aug 2005
6 Beiträge
 
#1

Extraktion von Icons

  Alt 3. Mai 2006, 11:53
Hallo Leute,

ich brauche gerade ein paar Icons (XP-Style) für eine meiner Anwendungen und wollte dabei auf die mit Windows gelieferten zurückgreifen. Nun liegen diese ja nicht als ICO-Files vor, sondern sind in Anwendungen und DLLs eingebettet - man muss sie folglich extrahieren. Ich mache das so:

Code:
uses ShellAPI...

...

function IconFromFile(S : string): TIcon;
var
  MyIcon : TIcon;
  SHFileInfo: TSHFileInfo;
begin
  MyIcon := TIcon.Create;
  SHGetFileInfo(pchar(S), 0, SHFileInfo, SizeOf(SHFileInfo), SHGFI_ICON);
  MyIcon.Handle:= SHFileInfo.hIcon;
  Result:=MyIcon;
end;
Läd man das von obiger Funktion zurückgegebene Icon in ein Image, z.B.

Code:
Image1.Picture.Icon:=IconFromFile('C:\WINDOWS\system32\sndrec32.exe');
dann erhält man das:

http://www.imgmonkey.com/thumb/9461-icon1.gif (schön)

Nun wäre es unsauber, das Icon zur Laufzeit zu extrahieren und darzustellen. Wer weiß schon ob es die Quelldatei in zukünftigen Windows-Versionen noch gibt oder unter welchem Pfad sie abgelegt ist? Folglich brauche ich das ICO-File.

Speichert man das von obiger Funktion gelieferte Icon

Code:
MyIcon := IconFromFile('C:\WINDOWS\system32\sndrec32.exe');
MyIcon.SaveToFile('C:\icon.ico');
dann sieht das Resultat allerdings so aus:

http://www.imgmonkey.com/thumb/3111-icon2.gif (würg)

Ich habe auch einige Icon Extraktions-Tools ausprobiert und leider scheinen sie ähnliche Ergebnisse zu liefern.

---> Frage: Wie extrahiert man ein Icon richtig (d.h. als 1:1 Kopie)?

Alternativ wäre ich auch dankbar für Hinweise bzgl. Freeware Icon-Sammlungen (XP-Style). Momentan suche ich v.a. Icons aus dem Audio-Bereich (Mikrofone, Lautsprecher etc.).

Danke für Eure Hilfe!
  Mit Zitat antworten Zitat