Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: externes programm schliessen

  Alt 26. Aug 2008, 14:53
Die Forenregeln sehen vor, erst nach 24 Stunden zu pushen.

Es gibt grundsätzlich zwei Möglichkeiten: Entweder du verwendest die Tool-Help-Api, um durch alle Prozesse zu iterieren und die Eltern-Prozess-ID zu erhalten. Damit kannst du allerdings in bestimmten Fällen nicht alle Prozesse ermitteln: Wenn du nach Kindern von Prozess A suchst, kann es passieren, dass A einen Prozess B gestartet hat, der wiederum C erzeugt hat. Wenn B nun terminiert, kommst du nicht mehr an C heran.
Die zweite Möglichkeit verwendet ein Job-Objekt. Du musst Prozess A in den Job stecken (AssignProcessToJobObject). Alle Kindprozesse, die ab diesem Zeitpunkt erzeugt werden, sind ebenfalls im Job. Mit QueryInformationJobObject erhältst du eine Liste aller Prozesse im Job. Auch hier gibt es jedoch Nachteile: Erstens musst du zuerst den Prozess dem Job zuweisen. Zweitens kann ein Prozess nur in einem Job sein; es kann also zu Fehlern kommen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat