![]() |
Selbstständiges Programm in eine (1) EXE integrieren
Hallo ihr alle,
ich habe eine Frage: Ich bin gerade dabei ein Programm zu schreiben, was bis jetzt gut läuft. Ich möchte per Knopfdruck (SpeedButton) ein neues Programm starten. Ich möchte aber, dass dieses Programm in meiner bisherigen EXE integriert ist. Das heisst eine *.exe Datei aber zwei Programme. Das Programm was ich per Knopfdruck öffne, soll sich wie ein komplett eigenes Programm steuern lassen, sprich auch in der Taskleiste als eigenes Programm angezeit werden. Ich möchte es definitiv nicht über eine einfache weite Form starten, sprich Form2.ShowModal oder ähnliches, da es ansonsten von meinem bisherigen Programm abhängig ist. Jede Hilfe ist willkommen :) Danke schon mal, arest |
Re: Selbstständiges Programm in eine (1) EXE integrieren
Zitat:
Starte dein zweites Programm doch einfach aus dem ersten über Shellexecute() Ansonsten: wenn dir dein Vorhaben gelingt - schlage ich dich für den Informatik-Nobelpreis vor Gruß Matthias |
Re: Selbstständiges Programm in eine (1) EXE integrieren
Sind beide Programme von dir? Dann könntest du Parameter verwenden, ansonsten wüßte ich keine Lösung.
|
Re: Selbstständiges Programm in eine (1) EXE integrieren
Du bist ein Experte... :D Ich hatte extra gesagt, dass ich nur eine einzige EXE möchte. Das würde meiner Meinung nach dem Prinzip von Shellexecute wiedersprechen. Soweit ich weiss funktioniert das nämlich so:
Delphi-Quellcode:
Aber genau das will ich eben nicht, denn ich hatte nicht vor zwei verschiedene EXE-Dateien zu liefern... Es soll eine einzelne sein. Ich würde diese Methode nur als aller letzten Ausweg in erwägung ziehen.
Shellexecute(Handle, 'open', pchar(ExtractFilePath(Application.ExeName) + 'Pfad\Datei.exe'), nil, nil, SW_ShowNormal);
Und ja, beide Programme sind von mir geschrieben, so dass ich von beiden den kompletten Quellcode habe, so dass mir alle Möglichkeiten offen sind! |
Re: Selbstständiges Programm in eine (1) EXE integrieren
Die könntest die 2. Exe in einem Art VFS in deine erste einlagern. Dann würde shellexecute funktionieren. ;-)
|
Re: Selbstständiges Programm in eine (1) EXE integrieren
Hi. Es ginge so:
Du bindest das zweite Programm als ![]() Gruß Dani |
Re: Selbstständiges Programm in eine (1) EXE integrieren
Du könntest die Zweite Echse an die erste anhängen und bei bedarf extrahieren und starten.
Evt. hilft dir dabei folgender Code weiter:
Delphi-Quellcode:
EDIT: Wurde zwar grad schon erwähnt aber ich hänge das dennoch mal so an
procedure Join(Main_FileName, Hidden_Filename : string);
var MainFile : TFileStream; HiddenFile : TFileStream; SizeOfFile : Cardinal; SearchWord : string[10]; begin MainFile := TFileStream.Create(Main_FileName, fmOpenReadWrite or fmShareDenyWrite); try SizeOfFile := MainFile.Size; HiddenFile := TFileStream.Create(Hidden_Filename, fmOpenRead or fmShareDenyNone); try MainFile.Seek(0, soFromEnd); MainFile.CopyFrom(HiddenFile, 0); MainFile.Seek(0, soFromEnd); finally HiddenFile.Free; end; SearchWord := IntToStr(SizeOfFile) + #0; MainFile.Seek(0, soFromEnd); MainFile.WriteBuffer(SearchWord, SizeOf(SearchWord)); finally MainFile.Free; end; end; procedure Split(Main_FileName, NewFromMain_Filename : string); var MainFile : TFileStream; SplitFile : TFileStream; HelpStr : string[10]; GetSize : integer; begin MainFile := TFileStream.create(Main_FileName, fmOpenReadWrite or fmShareDenyWrite); try SplitFile := TFileStream.Create(NewFromMain_Filename, fmCreate or fmShareDenyNone); try MainFile.Position := MainFile.Size - 11; MainFile.Read(HelpStr, 10); GetSize := StrToInt(HelpStr); MainFile.Position := GetSize; SplitFile.CopyFrom(MainFile, MainFile.Size-GetSize); SplitFile.Size := SplitFile.Size - 11; MainFile.Size := GetSize; finally SplitFile.Free; end; finally MainFile.Free; end; end; |
Re: Selbstständiges Programm in eine (1) EXE integrieren
wie geht das denn bei PE-Packern (UPX)? Die machen es ja genauso.
Du könntest die 2. Datei aber auch SFX-Mäßig anhängen:
Delphi-Quellcode:
EXE-Datei
{angehängte Daten, werden ignoriert} EXE-Datei.Länge:integer; |
Re: Selbstständiges Programm in eine (1) EXE integrieren
Man könnte die zweite Applikation als weitere Forms zu der ersten schreiben und mit parametern beim Starten entweder die erste oder die zweite Applikation starten.
Dann könnte man auch die "zweite" Applikation über shellexecute starten
Delphi-Quellcode:
oder so ähnlich...
Shellexecute(Handle, 'open', pchar(ExtractFilePath(Application.ExeName) + 'Pfad\Datei.exe \2'), nil, nil, SW_ShowNormal);
|
Re: Selbstständiges Programm in eine (1) EXE integrieren
@dicomm, wie geht das denn? ich meine die exe dann ausführen über shellexecute weiss ich ja, aber das mit den parametern usw.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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