resource die mit updateresource gespeichert wurde auslesen
hiho
hab folgendes problem ich benutze folgenden code (hier aus DP) um eine exe-file (image.exe) als resource an eine andere exe (test.exe) zu hängen:
Delphi-Quellcode:
die image.exe gibt beim öffnen ein einfaches 'hello world' ausprocedure TForm1.LinkIt; var stream : TFilestream; hInst: THandle; ptr : Pointer; begin Stream := TFileStream.Create('Image.exe',fmOpenRead); getmem (ptr,Stream.size+1-14); try Stream.Seek(soFromBeginning,14); stream.read(ptr^,Stream.size); hInst:=BeginUpdateResource(Pchar('test.exe'), False); if hInst > 0 then begin UpdateResource(hInst, RT_RCDATA,'Image', MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),ptr,Stream.size-14); EndUpdateResource(hInst, False); end; finally freemem (ptr,Stream.size+1-14); stream.Free; end; end; diese soll an die test.exe gehangen werden laut ResourceHacker ist diese erfolgreich 'rangehangen' worden nun wollt ich beim starten der test.exe die image.exe wieder 'rausholen' mit folgendem befehl
Delphi-Quellcode:
doch der pointer (Resource) gibt immer nil (bzw Assigned=false) zurück
var
Resource: Pointer; .... begin . . . Resource := LockResource( LoadResource(0, FindResource(0, 'Image', RT_RCDATA))); if Assigned(Resource) then .... . . . end; was mach ich da falsch? |
Re: resource die mit updateresource gespeichert wurde ausles
Moin The Game,
ich würde die Aufrufe der Funktionen nicht verschachteln. So hast Du kaum eine Möglichkeit festzustellen, welcher Funktionsaufruf fehlschlägt, und warum. Beim Fehlschlagen eines Aufrufes kannst Du, i.d.R., mit GetLastError näher ermitteln was schiefgegangen ist. |
Re: resource die mit updateresource gespeichert wurde ausles
moin,
ich hab die verschachtelung jetzt mal aufgehoben
Delphi-Quellcode:
das problem liegt bei FindResourceHI := FindResourceEx(hInstance, 'Image', RT_RCDATA, MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL)); if HI <> 0 then begin HG := LoadResource(hInstance, HI); if HG <> 0 then begin Resource := LockResource( HG ); if Assigned(Resource) then begin ShowMessage('OK!'); . . . folgende Fehlermeldung spuckt GetLastError aus: "Der angegebene Resourcentyp wurde nicht in der Image-Datei gefunden" also RT_RCDATA scheint irgendwie falsch zu sein kann einer mir da weiterhelfen?? |
Re: resource die mit updateresource gespeichert wurde ausles
Delphi-Quellcode:
wieso 14 und nicht 0 ???
Stream.Seek(soFromBeginning,14)
|
Re: resource die mit updateresource gespeichert wurde ausles
hab den fehler endlich gefunden
der ResourceName darf nich 'Image' lauten, scheint denn wohl einen konflikt zu geben |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 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