Einzelnen Beitrag anzeigen

Benutzerbild von City Light
City Light

Registriert seit: 17. Sep 2002
314 Beiträge
 
#3

Re: eine belibige datei in ein prog einbinden

  Alt 30. Apr 2004, 21:53
Suchst du vielleicht das hier...
Delphi-Quellcode:
// 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 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-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;
Bis bald man liest sich
Tino
  Mit Zitat antworten Zitat