Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Wie kann ich mich selbst neu starten? (https://www.delphipraxis.net/168824-wie-kann-ich-mich-selbst-neu-starten.html)

eholzer 13. Jun 2012 08:31

Wie kann ich mich selbst neu starten?
 
Hallo,

wie kann ich das erreichen:
- in eigenem laufendem Programm treffe ich die Entscheidung, dass ich mich neu starten muss
- ich kann irgendwelchen Programmstatus irgendwo wegschreiben
- ich beende mich selber zuerst
- ich starte mich automatisch neu

Der Anwender sollte nur merken, dass das Programmfenster geschlossen und neu geöffnet wird, aber er sollte nicht gezwunden sein das Programm selber neu zu starten.

Danke,

Eric

t0mmy 13. Jun 2012 08:33

AW: Wie kann ich mich selbst neu starten?
 
ShellExecute
und Close

Edit: Hier noch ein hilfreicher Link hättest mit der Suche auch finden können:

http://www.delphipraxis.net/111129-n...programms.html

eholzer 13. Jun 2012 08:50

AW: Wie kann ich mich selbst neu starten?
 
Zitat:

ShellExecute
und Close
Das ist nicht die gewünschte Reihenfolge.

Eric

t0mmy 13. Jun 2012 08:51

AW: Wie kann ich mich selbst neu starten?
 
Dann halt zuerst Close und ShellExecute hab auf die schnelle geantwortet ;)

DeddyH 13. Jun 2012 08:56

AW: Wie kann ich mich selbst neu starten?
 
Zitat:

Zitat von eholzer (Beitrag 1170562)
Das ist nicht die gewünschte Reihenfolge.

Naja, ein Programm, das nicht mehr läuft, kann sich aber schwerlich selbst starten ;)

t0mmy 13. Jun 2012 09:09

AW: Wie kann ich mich selbst neu starten?
 
Theoretisch stimm ich DeddyH zu ;), jedoch funktionieren beide varianten sowie Close-ShellExecute als auch ShellExecute-Close

jaenicke 13. Jun 2012 09:19

AW: Wie kann ich mich selbst neu starten?
 
Und wenn aus irgendwelchen unerfindlichen Gründen die sich beendende Instanz nicht parallel mit der neu startenden laufen soll, dann kannst du ja beim Start warten bis die alte beendet ist und erst dann weiterstarten.

Da das aber die Wartezeit für den Benutzer unnötig verlängert, verstehe ich nicht wozu das gut sein soll...

DeddyH 13. Jun 2012 09:21

AW: Wie kann ich mich selbst neu starten?
 
Normalerweise würde man aber wohl noch auswerten wollen, ob der erneute Start auch funktioniert.
Da wäre dann IMO die einfachste Möglichkeit so etwas:
Delphi-Quellcode:
if ShellExecute(0, 'open', PChar(ParamStr(0)), nil, nil, SW_SHOWDEFAULT) > 32 then
  Close
else
  ShowMessage('Oops');
Oder man definiert sich ein privates Boolean-Feld, wertet das im OnClose aus und ruft dann einfach Close auf, nachdem man das Feld ggf. gesetzt hat.

Iwo Asnet 13. Jun 2012 09:41

AW: Wie kann ich mich selbst neu starten?
 
Zitat:

Zitat von DeddyH (Beitrag 1170572)
Delphi-Quellcode:
if ShellExecute(...) > 32 then

:kotz: magic numbers im Code.

DeddyH 13. Jun 2012 09:47

AW: Wie kann ich mich selbst neu starten?
 
Ich dachte, allein das ShowMessage('Oops') würde schon verdeutlichen, dass das kein Code sein soll, den man produktiv einsetzen sollte. Dann muss ich das demnächst für die Forenpolizisten wohl noch extra dazuschreiben :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz