Einzelnen Beitrag anzeigen

Benutzerbild von TheGame1492
TheGame1492

Registriert seit: 31. Jul 2004
Ort: Berlin
84 Beiträge
 
Delphi XE2 Professional
 
#1

resource die mit updateresource gespeichert wurde auslesen

  Alt 2. Aug 2005, 15:33
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:

procedure 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;
die image.exe gibt beim öffnen ein einfaches 'hello world' aus

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:
var
  Resource: Pointer;
  ....
begin
.
.
.
  Resource := LockResource(
          LoadResource(0, FindResource(0, 'Image', RT_RCDATA)));
        if Assigned(Resource) then
        ....
.
.
.
end;
doch der pointer (Resource) gibt immer nil (bzw Assigned=false) zurück

was mach ich da falsch?
  Mit Zitat antworten Zitat