Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Prozess inkl. davon gestartete Prozesse killen (https://www.delphipraxis.net/129585-prozess-inkl-davon-gestartete-prozesse-killen.html)

delphis spassbremse 21. Feb 2009 18:39


Prozess inkl. davon gestartete Prozesse killen
 
Hallo,

ich bin dabei mir einen neuen Desktop zu erstellen, auf dem die explorer.exe gestartet wird. (von der ich dann auch die PID habe)

Und wenn der Desktop geschlossen wird, möchte ich die auf diesem gestartete explorer.exe abschießen und
dazu auch noch alle Anwendungen, die von dieser explorer instanz gestartet wurde.


Ist das überhaupt möglich?
Wenn ja, wär ein Denkanstoß / Link / Beispielcode hilfreich ;)

Grüße,

Björn

64Jabor 22. Feb 2009 11:51

Re: Prozess inkl. davon gestartete Prozesse killen
 
Nunja, wenn du die explorer selbst programmiert hast, könntest du die PIDs der gestarteten Prozesse in eine Datei schreiben, sie beim Beenden der Prozesse wieder entfernen.

Hast du das nicht, wäre ein ANsatz, dass dein Desktopprogramm beim Start (noch vor dem Start der Zweiten(?) explorer.exe) alle PIDs listet und beim Beenden alles überflüssige beendet.
Das setzt vorraus dass während dein Desktopprogramm läuft NUR die explorer.exe Prozesse starten kann, oder du alle vom Benutzer gestarteten Prozesse in dem Desktopprogramm ebenfalls listen musst, diese Liste dann mit der nachher-vorher-Liste vergleiche müsstest.

Hoffe die Ideen helfen in einer Weise, oder habe ich etwas nicht verstanden?
Gruß Sebi

Luckie 22. Feb 2009 12:00

Re: Prozess inkl. davon gestartete Prozesse killen
 
Also mit MSDN-Library durchsuchenCreateToolHelpSnapshot bekommst du eine Prozessliste. In der Struktur MSDN-Library durchsuchenPROCESSENTRY32 gibt es ein Feld th32ParentProcessID. Du könntest jetzt alle Prozesse durchgehen und alle Prozesse, die den Explorer als Parent haben beenden.

himitsu 22. Feb 2009 12:03

Re: Prozess inkl. davon gestartete Prozesse killen
 
Zitat:

Zitat von Luckie
... und alle Prozesse, die den Explorer als Parent haben beenden.

BEENDEN ... warum willst du alles "abschießen"?

Luckie 22. Feb 2009 12:06

Re: Prozess inkl. davon gestartete Prozesse killen
 
Ich will das nicht, aber der Threadstarter will es:
Zitat:

möchte ich die auf diesem gestartete explorer.exe abschießen und
dazu auch noch alle Anwendungen, die von dieser explorer instanz gestartet wurde.

Apollonius 22. Feb 2009 12:09

Re: Prozess inkl. davon gestartete Prozesse killen
 
Erzeuge beim Erstellen des Explorers zusätzlich ein Job-Objekt, in welches du den Explorer setzt. Mit TerminateJobObject kannst du dann den Explorer und alle Prozesse, die von der Explorer-Instanz unmittelbar oder indirekt gestartet wurden, abschießen. Luckies Lösung funktioniert nur bei den Prozessen, die direkt vom Explorer gestartet wurden; ich vermute aber, dass du auch Enkel-Prozesse usw. terminieren willst.

mkinzler 22. Feb 2009 12:11

Re: Prozess inkl. davon gestartete Prozesse killen
 
Man könnte aber auch mit Rekursion arbeiten, denn Enkelprozesse sind ja die Kindprozesse der Kinder.

Apollonius 22. Feb 2009 12:14

Re: Prozess inkl. davon gestartete Prozesse killen
 
Das geht nicht. Was machst du, wenn das Kind schon tot ist, der Enkel aber noch lebt?

himitsu 22. Feb 2009 12:30

Re: Prozess inkl. davon gestartete Prozesse killen
 
Zitat:

Zitat von Apollonius
Das geht nicht. Was machst du, wenn das Kind schon tot ist, der Enkel aber noch lebt?

Das versuchen, was man da nicht schafft http://www.delphipraxis.net/internal...t.php?t=152586,
alles mitloggen und dann entsprechend beenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 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