AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Klasse zum Beenden eines Prozesses

Ein Thema von Luckie · begonnen am 19. Nov 2010 · letzter Beitrag vom 28. Mär 2011
Antwort Antwort
Seite 5 von 5   « Erste     345   
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#41

AW: Klasse zum Beenden eines Prozesses

  Alt 28. Mär 2011, 09:05
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

Mir fehlt da eine Möglichkeit, mit der ich festelegen kann, welche ProcessId nicht beendet werden soll.
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#42

AW: Klasse zum Beenden eines Prozesses

  Alt 28. Mär 2011, 10:07
alles mit MSDN-Library durchsuchenGetCurrentProcessId ignorieren


Delphi-Quellcode:
) and (GetCurrentProcessId <> pe32.th32ProcessID) then
  FProcessID := pe32.th32ProcessID;
$2B or not $2B

Geändert von himitsu (28. Mär 2011 um 10:09 Uhr)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#43

AW: Klasse zum Beenden eines Prozesses

  Alt 28. Mär 2011, 11:19
Es wäre ja immerhin denkbar, das die suchende Instanz meiner Anwendung die erste ist, die gefunden wird
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ß).
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#44

AW: Klasse zum Beenden eines Prozesses

  Alt 28. Mär 2011, 11:38
niedrigeste wäre der Prozeß mit der Nr. 0 (ein Pseudoprozeß).
Nur als kleiner Hinweis System und Idle sind Pseudo-Prozesse.

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.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#45

AW: Klasse zum Beenden eines Prozesses

  Alt 28. Mär 2011, 11:39
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 ...
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#46

AW: Klasse zum Beenden eines Prozesses

  Alt 28. Mär 2011, 13:44
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#47

AW: Klasse zum Beenden eines Prozesses

  Alt 28. Mär 2011, 14:13
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 UseBlacklist aktivieren. Ansonsten sind meine Änderungen hoffentlich gut kommentiert.
Angehängte Dateien
Dateityp: pas MpuKillProcessCls.pas (9,1 KB, 34x aufgerufen)
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?

Geändert von HeikoAdams (29. Mär 2011 um 08:52 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 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