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?