![]() |
Neustart des eigenen Programms
Gibt es in Delpi die Möglichkeit, auf Knopfruck einen Neustart des eigenen Programms zu machen?
|
Re: Neustart des eigenen Programms
Willst du eine 2. Instanz öffnen, oder das erste vorher beenden? Also:
1. Knopf drücken 2. Programm beenden 3. Programm starten Oder: 1. Knopf drücken 2. Programm starten |
Re: Neustart des eigenen Programms
Hi MCXSC,
du könntest ein Programm starten, welches dein Programm nach einer Zeitspanne neu startet. Nachdem du dieses Zwischenprogramm gestartet hast, beendest du dein Programm und die Sache ist erledigt. Greetz alcaeus |
Re: Neustart des eigenen Programms
Ja, daran habe ich auch schon gedacht. Aber man kann das Programm nicht doppeltstarten... Und das ist mein Problem.
|
Re: Neustart des eigenen Programms
Probier mal das:
0. Zwischenprogramm als Ressource in dein Programm einbinden 1. Dein Programm extrahiert Zwischenprogramm 2. Dein Programm startet Zwischenprogramm 3. Dein Programm beenden 4. Zwischenprogramm startet dein Programm 5. Dein Programm beendet dein Zwischenprogramm 6. Dein Programm löscht Zwischenprogramm Ist etwas umständlich aber sollte vom Prinzip her funktionieren. |
Re: Neustart des eigenen Programms
Oder du schreibst dir eine Batch-Datei, die du dann beim Beenden aufrufst.
|
Re: Neustart des eigenen Programms
Meinst du aus der IDE heraus?
Wenn ja gibt es einen Weg: 1) CTRL+F2 2) F9 Dadurch wird dein Programm aus dem Speicher entfernt und wieder gestartet. |
Re: Neustart des eigenen Programms
Is doch ganz einfach
1. Du startest das programm - instanz 2 - mit einem parameter und dem handle von instanz 1 2. Direkt beim start von instanz 2 machst du eine schleife, die so lange wartet bis inst 1 beendet 2. du beendest instanz 1 3. die schleife wird verlassen und instanz 2 läuft wie gewohnt! Klingt doch gut und man braucht keine anderen programme oder batch dateien :-D |
Re: Neustart des eigenen Programms
Jo! Ich machs auch immer so:
Delphi-Quellcode:
program Project1;
uses Forms, windows, Sysutils, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} var s:string; i:integer; begin if Paramcount >= 2 then if Paramstr(1)='abc' then begin for i:=1 to Length(Paramstr(2))do if (Paramstr(2)[i]>='0') and (Paramstr(2)[i]<='9') then s:=s+Paramstr(2)[i]; while IsWindow(strtoint(s))do sleep(1); end; //Mutex erst hier einfügen Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin ShellExecute(Handle, 'open', pchar('"'+paramstr(0)+'"'), pchar('abc '+inttostr(Handle)), nil, SW_SHOW); close; end; |
Re: Neustart des eigenen Programms
Wäre es nicht sinnvoller eine Prozedur zu schreiben, die alle einstellungen wieder zurücksetzt, als da so einen Krampf zu programmieren? :roll: Oder hat das ganze einen tiefern Sinn?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 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