Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Klasse zum Beenden eines Prozesses (https://www.delphipraxis.net/156073-klasse-zum-beenden-eines-prozesses.html)

HeikoAdams 28. Mär 2011 08:05

AW: Klasse zum Beenden eines Prozesses
 
Ich gebe zu, das ich den Thread nur überflogen haben, aber ich habe keine Antwort auf folgendes Problem gefunden:
Gehen wir einmal davon aus, das ich die Klasse nutzen will, um andere Instanzen der Anwendung, welche die Klasse nutzt, zu beenden. Wie stelle ich sicher, das die suchende Instanz sich nicht selber abschießt? Es wäre ja immerhin denkbar, das die suchende Instanz meiner Anwendung die erste ist, die gefunden wird :wink:

Mir fehlt da eine Möglichkeit, mit der ich festelegen kann, welche ProcessId nicht beendet werden soll.

himitsu 28. Mär 2011 09:07

AW: Klasse zum Beenden eines Prozesses
 
alles mit MSDN-Library durchsuchenGetCurrentProcessId ignorieren


Delphi-Quellcode:
) and (GetCurrentProcessId <> pe32.th32ProcessID) then
  FProcessID := pe32.th32ProcessID;

Delphi-Laie 28. Mär 2011 10:19

AW: Klasse zum Beenden eines Prozesses
 
Zitat:

Zitat von HeikoAdams (Beitrag 1091458)
Es wäre ja immerhin denkbar, das die suchende Instanz meiner Anwendung die erste ist, die gefunden wird :wink:

Denkbar ja, aber es entspricht nicht meiner Beobachtung. Der Prozeßschnappschuß funktioniert sowohl unter 9.x als auch NTx (ab Windows 2000) so, daß zuerst die systemnahen und dann erst die vom Anwender gestarteten Prozesse ausgegeben werden, unter NTx im wesentlichen in aufsteigender Reihenfolge ihrer Prozeßidentifikationsnummern (PIDs, ProcIDs oder ProcessIDs) - der niedrigeste wäre der Prozeß mit der Nr. 0 (ein Pseudoprozeß).

Assarbad 28. Mär 2011 10:38

AW: Klasse zum Beenden eines Prozesses
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1091490)
niedrigeste wäre der Prozeß mit der Nr. 0 (ein Pseudoprozeß).

Nur als kleiner Hinweis System und Idle sind Pseudo-Prozesse.

Zitat:

Zitat von HeikoAdams (Beitrag 1091458)
Mir fehlt da eine Möglichkeit, mit der ich festelegen kann, welche ProcessId nicht beendet werden soll.

Okay, sagen wir mal Luckie baut das ein. Drei Monate später kommt wieder jemand, der nicht nur eine PID sondern mehrere ausschließen will. Das Problem ist, daß keiner wissen kann wie es für dich ideal ist. Dazu bist du ja aber Entwickler. Die Bausteine hast du. Jetzt bist du gefragt sie kreativ zusammenzusetzen und den Mörtel dort zu benutzen wo es notwendig ist, um Halt reinzubringen.

HeikoAdams 28. Mär 2011 10:39

AW: Klasse zum Beenden eines Prozesses
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1091490)
Denkbar ja, aber es entspricht nicht meiner Beobachtung. Der Prozeßschnappschuß funktioniert sowohl unter 9.x als auch NTx (ab Windows 2000) so, daß zuerst die systemnahen und dann erst die vom Anwender gestarteten Prozesse ausgegeben werden, unter NTx im wesentlichen in aufsteigender Reihenfolge ihrer Prozeßidentifikationsnummern (PIDs, ProcIDs oder ProcessIDs) - der niedrigeste wäre der Prozeß mit der Nr. 0 (ein Pseudoprozeß).

Das hängt aber auch ein großes Stück davon ab, wann man die entsprechenden Funktionen aufruft. Für den Programmstart mögen Deine Beobachtungen korrekt sein. Zu einem späteren Zeitpunkt würde ich mich jedenfalls nicht darauf verlassen mögen.

Beispiel:
Ein Programm wird parallel 3x ausgeführt, um z.B. periodisch bestimmte Aufgaben auszuführen. Vor der Ausführung der Aufgaben werden etwaige tote Instanzen der Anwendung gesucht und beendet. Jetzt jetzt gehen wir einmal davon aus, das die beiden zuletzt gestarteten Instanzen hängen und man der Klasse nur den Fenstertitel oder den Dateinamen der Programmdatei übergeben kann, der bei allen 3 Instanzen identisch ist ... :wink:

Luckie 28. Mär 2011 12:44

AW: Klasse zum Beenden eines Prozesses
 
Und ich würde mich nicht darauf verlassen, dass MS nicht die Implementierung ändert und irgendwann mal erst die Prozesse mit ungeraden IDs zu erst ausgibt und dann die mit den geraden. ;)

@Heiko: Irgendwo muss man einen Schnitt machen. Man ja nicht alle gewünschten Eventualitäten von zukünftigen Programmierer aufnehmen.

HeikoAdams 28. Mär 2011 13:13

AW: Klasse zum Beenden eines Prozesses
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe Luckies Klasse ein wenig erweitert und ein paar potentielle Probleme beseitigt. Falls jemand die Möglichkeit braucht, mehr als eine Prozess-ID zu blacklisten, muss er nur die Direktive
Delphi-Quellcode:
UseBlacklist
aktivieren. Ansonsten sind meine Änderungen hoffentlich gut kommentiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:27 Uhr.
Seite 5 von 5   « Erste     345   

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