AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap in Exe

Ein Thema von PlanLos · begonnen am 23. Okt 2003 · letzter Beitrag vom 24. Nov 2003
Antwort Antwort
Seite 1 von 2  1 2      
PlanLos

Registriert seit: 13. Okt 2003
11 Beiträge
 
#1

Bitmap in Exe

  Alt 23. Okt 2003, 12:02
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?
Ohne Fleis kein Reis
  Mit Zitat antworten Zitat
PlanLos

Registriert seit: 13. Okt 2003
11 Beiträge
 
#2

Re: Bitmap in Exe

  Alt 24. Okt 2003, 11:41
hier ist mein versuch

Delphi-Quellcode:
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;
[edit=r_kerber]Delphi-Tags gesetzt. Mfg, r_kerber[/edit]
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Bitmap in Exe

  Alt 24. Okt 2003, 14:30
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;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
PlanLos

Registriert seit: 13. Okt 2003
11 Beiträge
 
#4

Re: Bitmap in Exe

  Alt 27. Okt 2003, 08:13
Moin

Geht Danke
Du bist wie immer eine grosse Hilfe.
Ohne Fleis kein Reis
  Mit Zitat antworten Zitat
PlanLos

Registriert seit: 13. Okt 2003
11 Beiträge
 
#5

Re: Bitmap in Exe

  Alt 31. Okt 2003, 15:57
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?
Ohne Fleis kein Reis
  Mit Zitat antworten Zitat
PlanLos

Registriert seit: 13. Okt 2003
11 Beiträge
 
#6

Re: Bitmap in Exe

  Alt 17. Nov 2003, 09:18
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#7

Re: Bitmap in Exe

  Alt 18. Nov 2003, 16:09
Ich hab' da mal 'ne Frage:

Wieso kommt an dieser Stelle

MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),ptr^,Stream.size); die Meldung das MAKELANGID ein undefinierbarer Bezeichner ist?

Muss ich dafür vielleicht noch irgendeine Uses einbinden?


Danke UC
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Bitmap in Exe

  Alt 18. Nov 2003, 19:57
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;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
fxbasic
(Gast)

n/a Beiträge
 
#9

Re: Bitmap in Exe

  Alt 20. Nov 2003, 12:38
Zitat von PlanLos:
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.
Daran scheitert's bei mir im Moment noch.

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!
  Mit Zitat antworten Zitat
fxbasic
(Gast)

n/a Beiträge
 
#10

Re: Bitmap in Exe

  Alt 20. Nov 2003, 12:56
Könnten's evtl. 14 Bytes sein???
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz