Autor |
Beitrag |
DaViNcHi
Hält's aus hier
Beiträge: 13
|
Verfasst: 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
|
Verfasst: Do 29.06.06 16:00
Extrahiere es zur Laufzeit aus der Ressource, schreib es auf die Platte und führ es aus.
|
|
DaViNcHi 
Hält's aus hier
Beiträge: 13
|
Verfasst: Do 29.06.06 16:09
danke! hm aber wie mach ich das :/
also mit welchen befehlen?
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 29.06.06 16:17
In der Delphihilfe: TRessourceStream
Im MSDN: Shellexecute, CraeteProcess, ...
|
|
DaViNcHi 
Hält's aus hier
Beiträge: 13
|
Verfasst: 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
      
Beiträge: 191
|
Verfasst: 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...
|
|
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: 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 
Hält's aus hier
Beiträge: 13
|
Verfasst: 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 
|
|
root_at_localhost
      
Beiträge: 191
|
Verfasst: 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...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 30.06.06 01:25
|
|
DaViNcHi 
Hält's aus hier
Beiträge: 13
|
Verfasst: Fr 30.06.06 13:28
so habs jetzt endlich hingekriegt
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; |
|
|