Hey,
ich habe mir eine kleine
Unit geschrieben, welche Icons aus einer EXE extrahieren und als Icon speichern kann. Ebenso kann ich eine Icon Resource anhand einer Icon Datei einer EXE hinzufügen. Intern verwende ich folgende Strukturen:
Delphi-Quellcode:
// RESOURCE ICON HEADER
type
PResIconEntry = ^TResIconEntry;
TResIconEntry = packed record
bWidth: Byte;
bHeight: Byte;
bColorCount: Byte;
bReserved: Byte;
wPlanes: Word;
wBitCount: Word;
dwBytesInRes: DWord;
nID: Word;
end;
PGroupIconHeader = ^TGroupIconHeader;
TGroupIconHeader = packed record
idReserved: Word;
idType: Word;
idCount: Word;
idEntries: Array[0..31] of TResIconEntry;
end;
// FILE ICON HEADER
type
PIconEntry = ^TIconEntry;
TIconEntry = packed record
bWidth: Byte;
bHeight: Byte;
bColorCount: Byte;
bReserved: Byte;
wPlanes: Word;
wBitCount: Word;
dwBytesInRes: DWord;
dwImageOffset: DWord;
end;
TPageInfo = packed record
Width: Byte;
Height: Byte;
ColorQuantity: Integer;
Reserved: DWord;
PageSize: DWord;
PageOffSet: DWord;
end;
TIcoFileHeader = packed record
FileFlag: Array[0..3] of Byte;
PageQuartity: Integer;
PageInfo: TPageInfo;
end;
PIconHeader = ^TIconHeader;
TIconHeader = packed record
idReserved: Word;
idType: Word;
idCount: Word;
idEntries: Array[0..0] of TIconEntry;
end;
Ich zeige die extrahierten Icons in einem ListView an. Nun möchte ich allerdings gerne den Weg über die Festplatte und LoadImage() vermeiden. Weiß also jemand, wie ich meine Structs nun zu einem HICON konvertieren könnte und umgekehrt?
Viele Grüße
Zacherl