Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - exe in prog mit resource einbinden
DaViNcHi - Do 29.06.06 15:40
Titel: exe in prog mit resource einbinden
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 :)
Delete - Do 29.06.06 16:00
Extrahiere es zur Laufzeit aus der Ressource, schreib es auf die Platte und führ es aus.
DaViNcHi - Do 29.06.06 16:09
danke! hm aber wie mach ich das :/
also mit welchen befehlen?
Delete - Do 29.06.06 16:17
In der Delphihilfe: TRessourceStream
Im MSDN: Shellexecute, CraeteProcess, ...
DaViNcHi - Do 29.06.06 17:51
hm un wie mach ich des dann...vl so!?
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 - Do 29.06.06 18:32
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...
DaViNcHi - 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
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 - Do 29.06.06 22:53
ok, dann mach
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...
Delete - Fr 30.06.06 01:25
DaViNcHi 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 - 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...
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'), nil, nil, SW_SHOW); end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!