// Getestet mit D4 unter WinME

// Um eine andere EXE (oder DLL, oder..oder..) als Ressource in das eigene
// Programm einzubinden, muss man logischerweise zunächst eine Ressource
// erzeugen. Dazu kann man sich
(Für Delphi 4) ein kleines Zusatzprogramm
// schreiben, welches das automatisch erledigt:

uses shellapi; 
 
// Bedingung ist, dass die BRCC32.EXE im Path zu finden ist, 
// sonst muss der qualifizierte Name angegeben werden, 
// z.B.: C:\Programme\Borland\Delphi4\Bin\brcc32.exe 
 
function res_erzeugen(exe, flr: string): integer; 
var 
  tf: tfilestream; 
  s: string; 
begin 
  s := 'TEST RCDATA ' + exe; 
  tf := tfilestream.create(flr + 'exe.rc', fmcreate); 
  tf.writebuffer(s[1], length(s)); 
  tf.free; 
  result := shellexecute(application.handle, 'open', 
    'brcc32.exe', pchar(flr + 'exe.rc'), pchar(flr), sw_hide); 
end; 
 
// Aufruf zur Verarbeitung der Beispieldatei "uhr.exe". Die Ressource 
// wird im selben Folder wie das aufrufende Programm gespeichert. 
 
procedure TForm1.Button1Click(Sender: TObject); 
var NameDerExe: string; 
begin 
  NameDerExe := 'd:\uhr.exe'; // oder 'test.dll' oder..oder.. 
  if res_erzeugen(NameDerExe, extractfilepath(application.exename)) <= 32 
    then showmessage('Fehler aufgetreten'); 
end; 
// Nachdem die Ressource namens "EXE.RES" erzeugt wurde, kann sie in andere 
// Programme eingebunden werden. 
// Siehe auch AVI (MIDI)-Resourcen mit Mediaplayer abspielen
... 
implementation 
 
{$R *.DFM} 
{$R EXE.RES} 
 
uses shellapi; 
 
procedure TForm1.Button1Click(Sender: TObject); 
var 
  tr: TResourcestream; 
  NeueDatei: string; 
begin 
  NeueDatei := 'uhr.exe'; 
  tr := tresourcestream.create(hinstance, 'TEST', RT_RCDATA); 
  tr.savetofile(NeueDatei); 
  tr.free; 
// falls es sich z.B. um EXE handelt, kann diese dann gleich gestartet werden 
// shellexecute(handle, 'open', pchar(NeueDatei), nil, nil, sw_shownormal); 
end; 


Zugriffe seit 6.9.2001 auf Delphi-Ecke