![]() // 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; |