Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Selbstständiges Programm in eine (1) EXE integrieren (https://www.delphipraxis.net/63142-selbststaendiges-programm-eine-1-exe-integrieren.html)

arest 14. Feb 2006 13:49


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

mbamler 14. Feb 2006 13:58

Re: Selbstständiges Programm in eine (1) EXE integrieren
 
Zitat:

Zitat von arest
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



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

Vjay 14. Feb 2006 14:14

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.

arest 14. Feb 2006 14:17

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:
Shellexecute(Handle, 'open', pchar(ExtractFilePath(Application.ExeName) + 'Pfad\Datei.exe'), nil, nil, SW_ShowNormal);
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.

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!

mkinzler 14. Feb 2006 14:20

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. ;-)

Sergej 14. Feb 2006 14:23

Re: Selbstständiges Programm in eine (1) EXE integrieren
 
Hi. Es ginge so:

Du bindest das zweite Programm als Hier im Forum suchenRessource ein, extrahierst es zur Laufzeit irgendwo hin und startest es per ShellExecute().

Gruß Dani

Hador 14. Feb 2006 14:31

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:
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;
EDIT: Wurde zwar grad schon erwähnt aber ich hänge das dennoch mal so an

ichbins 14. Feb 2006 14:37

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;

diComm 14. Feb 2006 14:38

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:
Shellexecute(Handle, 'open', pchar(ExtractFilePath(Application.ExeName) + 'Pfad\Datei.exe \2'), nil, nil, SW_ShowNormal);
oder so ähnlich...

arest 14. Feb 2006 14:54

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 15:37 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz