![]() |
Programm aus Programm starten (aus dem Speicher)
Hi,
Ich will folgendes machen : Ich habe in meinem Projekt eine EXE gespeichert (über ein VCL). Nun will ich die EXE in den Speicher laden und ausführen. Also ohne auf der Festplatte zwischen zu speichern ... Ich will das machen um die Performance meines Programmes zu erhöhen. Hat einer eine Idee wie ich das machen kann? Ist es überhaupt sinnvoll? |
Re: Programm aus Programm starten (aus dem Speicher)
Zitat:
![]() Zitat:
|
Re: Programm aus Programm starten (aus dem Speicher)
Is die exe in einer Res Datei compiliert und dann in die Hauptexe eingebunden? Wenn ja dann könnt ich dir helfen wenn nicht dann nich :). Sry das ich das frag aber ich weis halt nich so was mit vcl gemeint is :(
|
Re: Programm aus Programm starten (aus dem Speicher)
Kann man eigentlich auch ein Programm in die Ressourcen für dieses aufnehmen, also dass man das Programm "in sich selbst reinkompiliert" ?
Übrigens, Herzlich Willkommen in der DP :party: |
Re: Programm aus Programm starten (aus dem Speicher)
Erstmal Herzlich Willkommen in der DP :party: `(is doch dein erster beitag, oder??? Warum sagt denn niemand hallo :gruebel: )
Was ist das denn für eine VCL die du benutzt? |
Re: Programm aus Programm starten (aus dem Speicher)
Zitat:
Irgendwie erinnert mich das ganze jetzt wieder an dieses Gesetz, das man nichts messen kann, ohne das Ergebnis zu verfälschen,.. hach, wie hie0 das noch,... |
Re: Programm aus Programm starten (aus dem Speicher)
Moin Tortus,
Zitat:
@Ultimator: Grundsätzlich kannst Du in die Resourcen alles mit einkompilieren was Du, nur halt sich selber nicht, wie Tortus ja schon ausgeführt hat. |
Re: Programm aus Programm starten (aus dem Speicher)
warum sollte man das nich können ultimator? einfach die Exe des Progs erstellen und dann nochmal ne exe erstellen und die andere Exe dann intern reincompilieren (also 2 mal das selbe Prog in einem(sinnlos))
|
Re: Programm aus Programm starten (aus dem Speicher)
OK, danke!
Das mit der Heisenbergschen Unschärferelation ist doch fast das Gleiche wie mit den Wahrsagern. Die erzählen einem doch auch das, was passiert wäre, wenn man nicht gewusst hätte, dass es passiert. D.h., man ginge (unwissend) aus dem Haus und würde von einem Ziegelstein erschlagen. Da man aber weiß, dass man von einem Ziegelstein erschlagen würde, wartet man etwas und geht dann erst. Deshalb kann man oft sagen, Wahrsager hätten nie Recht :wink: |
Re: Programm aus Programm starten (aus dem Speicher)
Klar geht das, nur eben nicht so wie du willst. Du kannst eine Exe als Ressource reinpacken, wen ndu sie brauchst entpackst du sie auf die Festplatte und speicherst sie. Warum muss es denn unbedingt aus dem Speicher sein? Wenn das ganze von CD-ROM gestartet wird, dann such dir das temporäre Verzeichnis des Benutzer und entpack sie dahin - und nicht vergessen sie wieder zu löschen.
Btw. hat NicoDE so was shcon mal gemacht, eine anwendung aus dem Speicher starten. Zu finden bei mir hier: ![]() |
Re: Programm aus Programm starten (aus dem Speicher)
Wieso muss man die erst irgendwo speichern @ Luckie? ich compiliere sie auch immer ein und öffne sie ohne zwischen zu speichern. Also 2 Exen in eine.
|
Re: Programm aus Programm starten (aus dem Speicher)
Zitat:
|
Re: Programm aus Programm starten (aus dem Speicher)
ups jetzt hab ich auch bemerkt, dass er sie erst speichert aber ich hab das mit dem gleich öffnen nur gedacht weil ich die exe nie gesehen hab, da er sie ja sofort wieder löscht :(. hatte den Code noch gar nicht so richtig studiert, da er ja nich von mir is. Sry :pale:
hier trotzdem nochmal der Code:
Code:
:oops:
function GetTempDir: string;
var Buffer: array[0..MAX_PATH] of Char; begin GetTempPath(SizeOf(Buffer) - 1, Buffer); Result := StrPas(Buffer); end; function ExtractRes(ResType, ResName, ResNewName: string): Boolean; var Res: TResourceStream; begin Result := False; Res := TResourceStream.Create(Hinstance, Resname, PChar(ResType)); try Res.SavetoFile(ResNewName); //<-- nich gesehen hab :( Result := True; finally Res.Free; end; end; procedure ShellExecute_AndWait(FileName: string); var exInfo: TShellExecuteInfo; begin FillChar(exInfo, SizeOf(exInfo), 0); with exInfo do begin cbSize := SizeOf(exInfo); fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT; Wnd := GetActiveWindow(); ExInfo.lpVerb := 'open'; lpFile := PChar(FileName); nShow := SW_SHOWNORMAL; end; if not ShellExecuteEx(@exInfo) then Exit; end; Procedure Exeoeffnen(Resname:string); var notepad:string; begin notepad := GetTempDir + 'Notepad_FROM_RES.EXE'; if ExtractRes('EXEFILE', Resname, notepad) then if FileExists(notepad) then begin ShellExecute_AndWait(notepad); DeleteFile(notepad); end; end; procedure TForm1.Button1Click(Sender: TObject); begin Exeoeffnen('der Resname des progs'); end; |
Re: Programm aus Programm starten (aus dem Speicher)
Wow ... Ich wollt zuerst ein paar Tage warten und dann wieder vorbei schauen - aber so viele Anworten an einem Tag.
@Neuni : Ich speicher die EXE mit dem JEDI Komponenten im einem Formular. Dann steht mir die Datei als TStream zu Verfügung. @Luckie : Danke ich werde mir das mal anschauen. Danke nochmal. Wenn ich eine gute Lösung finden, dann poste ich den Code. Alexander Wilhelm. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz