Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Prüfen ob Programm abgestürzt ist (https://www.delphipraxis.net/177915-pruefen-ob-programm-abgestuerzt-ist.html)

Furtbichler 8. Dez 2013 09:50

AW: Prüfen ob Programm abgestürzt ist
 
Zitat:

Zitat von hoika (Beitrag 1238936)
...und schieße es dann ab....

... und starte es dann neu? :stupid:

Leider kann man nicht jedes Programm 'abschießen', vor allen Dingen gerade die, die 'hängen'.

Aber wenigstens hast Du das für dich definiert und hier kundgetan: Alle anderen reden nur um den heißen Brei herum

Delphi-Laie 8. Dez 2013 11:17

AW: Prüfen ob Programm abgestürzt ist
 
Zitat:

Zitat von Furtbichler (Beitrag 1238946)
Leider kann man nicht jedes Programm 'abschießen', vor allen Dingen gerade die, die 'hängen'.

Wohl nicht auf die Weise, die der Taskmanager unter "Anwendungen" als "Task beenden" anbietet. Das ist nach meinem Wissen nicht mehr als eine an das Progremm verschickte Beenden-Bitte. Programme, die sich verschließen, werden darauf demnach nicht anders als "verzickte" Menschen reagieren. Besser ist schon "Prozess beenden" unter dem Reiter "Prozesse", das beruht m.E. auf TerminateProcess. Besonders groß dürfte die Erfolgsaussicht sein, wenn man das mit erweiterten Prviilegien tut (erfordert Administratorrechte). Mein Programm "Prozesse" (auch in diesem Forum unter "Prozeßbetrachter" zu finden) demonstriert das.

Allerdings stößt auch TerminateProcess irgendwann an seine Grenzen, und zwar bei Diensten und den "besonders systemnahen Prozessen".

Ergänzung: "Besonders systemnahe Prozesse" setzte ich deshalb in Anführungsstriche, weil mir noch ein glanzvoller Beitrag von Assarbad "im Hinterkopf" bekannt und bewußt war, den ich nun wiederfand: http://www.delphipraxis.net/1057551-post10.html

himitsu 8. Dez 2013 11:24

AW: Prüfen ob Programm abgestürzt ist
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1238962)
Allerdings stößt auch ProcessTerminate irgendwann an seine Grenzen, und zwar bei Diensten.

Nur wenn da die nötigen Rechte fehlen. (Anwender/Taskmanager = Benutzer und Dienst ist Systemdienst)

Aber bei hängenden Treibern (nicht User-Mode-Treibern) wartet ProcessTerminate auch gern auf den Treiber.



Also:
- Windows prüft nur, ob die GUI hängt, aber kann nicht prüfen ob das Programm hängt

- was "Hängen" ist, muß je nach Anwendung/Funktion/Verwendung entsprechend definiert werden

- es ist nicht immer möglich auf das "Hängen" zu prüfen

- praktisch kann man nur regelmäßig versuchen eine "Aktion" auszulösen und deren "Ergebnis" auswerten, um das "Hängen/Funktionieren" prüfen zu können,
aber auch das ist nicht immer ein sichere Prüfmethode (z.B. Funktionsaufruf geht, das Ergebnis ist valide, aber es stimmt nicht "mehr", weil eine Aktualisierungsroutine hängt)

- usw.

jaenicke 8. Dez 2013 11:43

AW: Prüfen ob Programm abgestürzt ist
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1238962)
Wohl nicht auf die Weise, die der Taskmanager unter "Anwendungen" als "Task beenden" anbietet. Das ist nach meinem Wissen nicht mehr als eine an das Progremm verschickte Beenden-Bitte.

Aber danach wird auch angeboten das Programm hart zu beenden, wenn es auf die Message mit der Anforderung nicht reagiert. Deshalb ist der Weg schon der sinnvollste, wenn man nicht zu 100% sicher ist, dass das Programm ohnehin nicht reagieren wird. Denn wenn es doch noch darauf reagiert und nur die GUI gerade eingefroren ist, wird es dann sanft beendet und kann dabei aufräumen.

Hart beenden sollte man nur, wenn der sanfte Weg nicht klappt.

Furtbichler 8. Dez 2013 19:19

AW: Prüfen ob Programm abgestürzt ist
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1238962)
Zitat:

Zitat von Furtbichler (Beitrag 1238946)
Leider kann man nicht jedes Programm 'abschießen', vor allen Dingen gerade die, die 'hängen'.

:::Besser ist schon "Prozess beenden" unter dem Reiter "Prozesse", das beruht m.E. auf TerminateProcess. Besonders groß dürfte die Erfolgsaussicht sein, wenn man das mit erweiterten Prviilegien tut (erfordert Administratorrechte)....

Witzbold ;-) Wenn ich sage 'geht nicht', dann meine ich natürlich auch 'geht nicht'. Weder mit Adminrechten, noch als Prozess, noch sonstewie.

Zitat:

Zitat von himitsu (Beitrag 1238966)
Aber bei hängenden Treibern (nicht User-Mode-Treibern) wartet ProcessTerminate auch gern auf den Treiber.

Und wenn der Treiber schrott ist, dann wartet ProcessTerminate eben bis in alle Ewigkeit => 'geht nicht'

iDope 10. Dez 2013 11:02

AW: Prüfen ob Programm abgestürzt ist
 
Okay, das ist ja ein ziemlich heikles Thema was ich hier angestoßen habe.
Und wie das hier aussieht ist genau das was ich vor hatte gar nicht bzw nicht in diesem Ausmaß möglich, wenn ich mir hier die Kommentare durchlese.
Trotzdem vielen Dank für eure Hilfe, ich versuche eine andere Lösung des Problems zu finden.
Falls jemand jedoch eine Lösung, die mein Problem behebt, findet, die eventuell noch nicht angesprochen wurde, wäre es nett diese hier zu posten (:

MfG
iDope


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.
Seite 3 von 3     123   

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