Autor Beitrag
DaViNcHi
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Do 29.06.06 15:40 
hallo zusammen!
hab mal wieder ein mehr oder weniger kleines problem
ich möchte das sich in meinem programm durch ein klick auf einen button eine exe datei öffnet die ich früher mal programmiert hab...
am liebsten wär mir das mit hilfe einer resourcedatei weil ich da noch andere sachen reinpacken muss.
also wie ich die resourcedatei erstell ist mir klar ich weiß bloß nicht wie ich die exe-datei dann in meinem programm ausführen kann. hab schon mehrere sachen im internet dazu gelesen aber die haben mich nicht wirklich weiter gebracht :(
wär cool wenn ihr mir da weiterhelfen könntet
danke schonmal :)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 29.06.06 16:00 
Extrahiere es zur Laufzeit aus der Ressource, schreib es auf die Platte und führ es aus.
DaViNcHi Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Do 29.06.06 16:09 
danke! hm aber wie mach ich das :/
also mit welchen befehlen?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 29.06.06 16:17 
In der Delphihilfe: TRessourceStream
Im MSDN: Shellexecute, CraeteProcess, ...
DaViNcHi Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Do 29.06.06 17:51 
hm un wie mach ich des dann...vl so!?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
{$R C:/bla.res}

procedure TForm1.Button1Click(Sender: TObject);
res: tresourcestream;
begin
res:= tresourcestream.create(hinstance,'name',rt_rcdata);
shellexecute(res);
end;

hm naja wohl eher nicht sonst würds ja gehen...besser gefragt wo ist der fehler?
muss ich für shellexecute bei uses was ändern?
root_at_localhost
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 191



BeitragVerfasst: Do 29.06.06 18:32 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
res: tresourcestream;
fs : tfilestream;
begin
res:= tresourcestream.create(hinstance,'name',rt_rcdata);
fs := tfilestream.create('tempfile.exe', fmcreate);
fs.copyfrom(res);
fs.free;
res.free;
shellexecute('tempfile.exe');
end;

so in der Art, aber jetzt nur ganz grob aus dem Gedächtins zusammengetippt...
klezmor
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: Do 29.06.06 19:21 

_________________
"Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
DaViNcHi Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Do 29.06.06 22:32 
also auf den link bin ich schon vor längerer zeit gestoßen aber da steht nix drüber drin wie ich ne exe einbinde...
also ich habs grad mit dem code von root_at_localhost versucht aber da bringt er bei
ausblenden Quelltext
1:
2:
3:
fs.CopyFrom(res);
und 
shellexecute('tempfile.exe');

[Error] Unit1.pas(32): Not enough actual parameters (bei fs.CopyFrom(res))
und
[Error] Unit1.pas(35): Incompatible types: 'HWND' and 'String'
(bei shellexecute('tempfile.exe')

ich hoffe ihr könnt mir helfen aber schonmal danke allein wär ich nicht soweit gekommen :D
root_at_localhost
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 191



BeitragVerfasst: Do 29.06.06 22:53 
ok, dann mach
ausblenden Delphi-Quelltext
1:
fs.copyfrom(res, res.size);					

und für shellexecute müsste dir die suche weiterhelfen, du musst halt die exe ausführen...
wenn du die exe anschließend wieder löschen willst, musst du dir da halt auch noch was basteln...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 30.06.06 01:25 
user profile iconDaViNcHi hat folgendes geschrieben:

shellexecute('tempfile.exe');
[/code]
[Error] Unit1.pas(32): Not enough actual parameters (bei fs.CopyFrom(res))
und
[Error] Unit1.pas(35): Incompatible types: 'HWND' and 'String'
(bei shellexecute('tempfile.exe')

ich hoffe ihr könnt mir helfen aber schonmal danke allein wär ich nicht soweit gekommen :D

Muss schon verdammt schwer sein, in der Forensuche einfach mal Shellexecute einzugeben. :roll:
DaViNcHi Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Fr 30.06.06 13:28 
so habs jetzt endlich hingekriegt :D
danke nochmal für die hilfe! echt tolles forum! :)

also so hab ichs jetzt gemacht...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var   res: tresourcestream;
fs : tfilestream;
begin
res:= tresourcestream.create(hinstance,'name',rt_rcdata);
fs := tfilestream.create('tempfile.exe', fmcreate);
fs.copyfrom(res,res.size);
fs.free;
res.free;
ShellExecute(Application.Handle, PChar('open'), PChar('tempfile.exe'), nilnil, SW_SHOW);
end;