![]() |
Bitmap in Exe
Hallo,
Ich habe versucht mit Updateresource eine Bmp in eine Exe zu bringen. Zwar legt er dann in die exe die resource an, aber sie enthält nicht dass bild dass ich versuche implementieren. Die resource enthält keine Daten. Muss man ein Bild vorher irgendwie umwandeln damit Updateresource das bild richtig in die exe hineinfügt? |
Re: Bitmap in Exe
hier ist mein versuch
Delphi-Quellcode:
[edit=r_kerber]Delphi-Tags gesetzt. Mfg, r_kerber[/edit]
var
stream : TFilestream; hInst: THandle; ptr : PWideChar; begin Stream := TFileStream.Create('C:\test.bmp',fmOpenRead); getmem (ptr,Stream.size+1); try Stream.Seek(soFromBeginning,0); stream.read(ptr,Stream.size); hInst:=BeginUpdateResource(Pchar(Test.exe), False); if hInst > 0 then begin UpdateResource(hInst, RT_Bitmap,'Test', MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),ptr,Stream.size); EndUpdateResource(hInst, False); end; finally freemem (ptr,Stream.size+1); stream.Free; end; end; |
Re: Bitmap in Exe
Moin Planlos,
Moin Planlos, probier's mal so:
Code:
var
stream : TFilestream; hInst: THandle; ptr : [color=red]Pointer[/color]; begin Stream := TFileStream.Create('C:\test.bmp',fmOpenRead); getmem (ptr,Stream.size+1); try Stream.Seek(soFromBeginning,0); stream.read(ptr[b][color=red]^[/color][/b],Stream.size); [color=red]// <== [/color] hInst:=BeginUpdateResource(Pchar(Test.exe), False); if hInst > 0 then begin UpdateResource(hInst, RT_Bitmap,'Test', MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),ptr[b][color=red]^[/color][/b],Stream.size); [color=red]// <== [/color] EndUpdateResource(hInst, False); end; finally freemem (ptr,Stream.size+1); stream.Free; end; end; |
Re: Bitmap in Exe
Moin
Geht Danke :mrgreen: Du bist wie immer eine grosse Hilfe. |
Re: Bitmap in Exe
Hi Christian,
Ich habe mich doch zu früh gefreut. Zwar wird mir in ResourceHacker das Bild das ich in die Exe reinmache angezeigt, aber wenn ich das Bild ausgeben will funktioniert das nicht. ich Habe mal das bild mit ResourceHacker als Datei speichern lasse. Das Ergebnis ist ein Leeres Bild. Warum ? Hat jemand da ne Idee? |
Re: Bitmap in Exe
das Problem hat sich erledigt.
Es lag nur daran, dass in den stream noch die Fileheader Information von dem Bild vorhanden war. Wenn man dementsprechend alles nach den Fileheader auliest funktioniert es. |
Re: Bitmap in Exe
Ich hab' da mal 'ne Frage:
Wieso kommt an dieser Stelle
Delphi-Quellcode:
die Meldung das MAKELANGID ein undefinierbarer Bezeichner ist?
MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),ptr^,Stream.size);
Muss ich dafür vielleicht noch irgendeine Uses einbinden? :love: Danke UC |
Re: Bitmap in Exe
Moin UC,
ich konnte keine Deklaration dafür in Delphi finden. Es ist eigentlich ein Makro, dass in Delphi als Funktion deklariert werden müsste:
Delphi-Quellcode:
function MAKELANGID(const usPrimaryLanguage : WORD;const usSubLanguage : WORD) : WORD;
begin Result := (usSubLanguage shl 10) or usPrimaryLanguage; end; |
Re: Bitmap in Exe
Zitat:
Bei welcherr Stream-Position muss ich ansetzen, damit die Fileheaderinfos übersprungen worden? Gibt's da irgend einen fixen Wert? Vielleicht könnte jemand mal einen definitiven Code für die Bitmap-In-Exe-Funktion liefern, w+ürde mir sehr helfen. Oder funktion für's auslesen der länge des fileheaders! Vielen Dank im Voraus! |
Re: Bitmap in Exe
Könnten's evtl. 14 Bytes sein???
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz