Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Neustarten (https://www.delphipraxis.net/138482-neustarten.html)

chicky 11. Aug 2009 10:13


Neustarten
 
Gibt es in Delphi die Mgl. (z.B. mit WatchDogTimer o.ä.), dass sich ein Programm selbst neustartet, wenn es z.B. aufgehängt ist?

DeddyH 11. Aug 2009 10:16

Re: Neustarten
 
Wenn ein Programm hängt, kriegt es das ja gar nicht mit, eben weil es hängt. Wie soll es sich da neu starten?

Larsi 11. Aug 2009 10:17

Re: Neustarten
 
Nein. Eine Anwendung kann sich ohne eine andere Anwendung nicht neustarten, da sie ja zum neustarten erstmal geschlossen wird und sich dann natürlich dann nicht wieder selber ausführen kann. Aber du könntest erst die Anwendung nochmal starten und dann die alte Instanz schließen:

Delphi-Quellcode:
if Integer(ShellExecute(Form1.Handle, 'open', PChar(ExtractFilePath(Application.ExeName)+'zweite.exe'), nil, nil, SW_SHOWNORMAL))>32 then
Application.Terminate;

himitsu 11. Aug 2009 10:22

Re: Neustarten
 
es kommt darauf an, wie es hängt ...

man könnte einen Thread erstellen, welcher die Funktion überwacht,
(hier mußt aber sichergestellt sein, daß der Wachtread nicht durch irgendwas der restlichen Anwendung blokiert werden kann)
dieser startet eine neue Instant und Killt danach den eigenen Thread
(oder über einen Parameter wird der anderen Instanz mitgeteilt, daß diese den die alte Instanz killt)

chicky 11. Aug 2009 10:26

Re: Neustarten
 
Ich werde Larsi´s Methode mal probieren. Danke ersteinmal

Mithrandir 11. Aug 2009 10:28

Re: Neustarten
 
WatchDog klingt doch sehr nach µC. ;) Das würde, auf den PC übertragen, bedeuten, dass sich das komplette System neustarten müsste. Das macht Windows tatsächlich, allerdings nur nach BSOD, solange an der Standardeinstellung nichts gedreht wurde.

Die Idee mit dem Thread im Hintergrund klingt gar nicht mal so doof...

jfheins 11. Aug 2009 12:03

Re: Neustarten
 
Dann werfe ich mal den Link in den Raum: http://msdn.microsoft.com/en-us/library/cc303704.aspx und den da: http://msdn.microsoft.com/en-us/libr...47(VS.85).aspx

Und strafe euch damit lügen, denn: Es geht doch :mrgreen:

Zumindest ab Windows Vista/Server2008 und höher :angel2:

Mithrandir 11. Aug 2009 12:11

Re: Neustarten
 
Nun ja... :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 Uhr.

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