![]() |
abgestürzten prozess erkennen ?
wie krieg ich raus ob ein prozess sich noch meldet ( nicht abgestürzt ist und rückmeldung gibt ) oder ob er nicht mehr reagiert und z.b. in einer endlosschleife hängt oder einfach abgestürzt ist ?
das handle könnte ich raus bekommen... aber wie krieg ich raus ob es noch reagiert ? und wie isses mit einem service prozess? gehts da auch ? sind alle prozesse gleich zu behandeln bei sowas? |
kann mir also keiner ne antwort geben ?
krass :/ soll doch garnicht so ne schwierige frage sein :) hat echt keiner ne ahnung? oder nen ansatz wo ich suchen könnte ?!?! :bouncing4: |
So einfach ist das auch nicht, aber ich hatte da eine Idee:
Du beoabachtest einen Prozess, und wenn sich in einer bestimmten Zeitspanne sich nichts tut, dann könnte der Prozess abgestürzt sein. Allerdings kann ich dir nicht sagen, wie das geht. :( Chris |
klar... aber "was" beobachte ich ;)
kann ja nix senden und warten das was zurück kommt oder ?!?!?! DDE ? ole ? ka.. kann auf jeden fall nix in das zu überwachende proggi einbauen |
Hoi.
Also du könntest mal im PSDK nach Sendmessage suchen, wenn du das ned hasch dann auch ![]() |
Schau dir mal die Doku zu SendMessageTimeOut() an..
|
ja das wär genau richtig.. bloss weis ich net was ich als message nehmen soll die ich da sende und auf reply timeout überprüfe.
müsste irgend was sein wo wie ein ping wirkt *g* also das programm ist warscheinlich nur über die processid zu finden.. es ist ein dienst ( service ) :roll: |
Als Message könnte WM_NULL herhalten.. aber nur mit der ProcessID wirst du Probleme haben.. ich schau mal ob ich was finden kann!
|
Vielleicht hast du ja bereits
![]() Dort wird geschrieben, dass eine genaue Nachricht ist. Ich würde es am Anfang mal versuchen ganz ohne Nachricht zu versenden... Chris PS: Wenn du das in's OnCreate schreibst (wenn du VCL programmierst), dann gehen die Ladezeiten hoch!!! Nur als Hinweis. ;) |
@Motzi: die ProcessID ist kein Problem, wenn man einen ProcViewer schreibt (Sorry, Assarbad). Wenn du ein Beispiel brauchst, findest du auf
![]() Chris |
jo also die processid krieg ich bestimmt anhand des service namens raus irgendwie.. getpidbyname und dann hab ich die pid und dann daraus das handle bestimmen.. so irgendwie stell ich mir das vor.. und wenn ich das handle des services hab kann ich ja die abfrage starten ob das ding noch lebt
|
Moin Supermuckl,
auch wenn Du alle erforderlichen Daten hast bleibt noch das Problem, wonach Du entscheiden willst, ob der Prozess nun abgestürzt ist, oder nicht. SendMessageTimeOut könnte da zwar helfen, aber man sollte dann auch die Geschwindigkeit des Rechners mit in die TimeOutzeit einrechnen, ansonsten würde ja auf einem langsamen Rechner der Prozess eher als "aufgehängt" gelten, als auf einem schnellen. |
Wenn du die ProzessID hast, könnte man auch mit WaitForSingleObject da ran gehen.
|
Zitat:
![]() @Luckie: gehtt ein Prozess-Objekt nicht erst dann in den signalisierten Zustand über, sobald der Prozess beendet ist, also wenn der letzte Thread des Prozesses terminiert ist (zumindest hab ich das jetzt so im Gedächtnis)? |
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 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