// Getestet mit D4 unter WinME // Um eine andere
EXE
(oder DLL, oder..oder..)
als Ressource in das eigene 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;
|





