Seite 1 von 1

Umgebungsvars und prog beenden

Verfasst: Sonntag 6. Juli 2003, 10:59
von Glamdring
Moin, wie kann ich mir ansehen welche Prozesse gerade laufen z.B. mit Umgebungsvariablen(os.enviorn hab ich probiert) und wenn ein bestimmter Prozess läuft, den Prozess beenden bzw. Das Programm, das den Prozess auslöst beenden.

Gruß
Glamdring

Verfasst: Sonntag 6. Juli 2003, 12:53
von hans
welches OS?

Hans

Verfasst: Sonntag 6. Juli 2003, 13:46
von Glamdring
Windoof XP

Verfasst: Sonntag 6. Juli 2003, 17:26
von hans
Glamdring hat geschrieben:Windoof XP
Damit bin ich als Linuxer aus dem Rennen! Zu kompliziert!

Aber das Thema wurde hier schon mehrfach behandelt. such mal nach Prozess oder Process.

Hans

Verfasst: Sonntag 6. Juli 2003, 17:45
von Glamdring
Aha, das Problem mit den Prozessen ist gelöst-->

Code: Alles auswählen

pids = win32.win32pdhutil.FindPerformanceAttributesByName(procname) 
Aber das Problem mit dem Beenden vom Programm bleibt

Gruß
Glamdring

Verfasst: Sonntag 6. Juli 2003, 19:30
von rAiNm4n
Aha, das Problem mit den Prozessen ist gelöst-->
Code:

Code: Alles auswählen

pids = win32.win32pdhutil.FindPerformanceAttributesByName(procname)
Also bei mir kommt immer folgende Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in ?
    win32pdhutil.FindPerformanceAttributesByName("notepad.exe")
  File "C:\PROGRA~1\PYTHON22\lib\site-packages\win32\lib\win32pdhutil.py", line 49, in FindPerformanceAttributesByName
    items, instances = win32pdh.EnumObjectItems(None,None,object, -1)
error: (-1073738824, 'EnumObjectItems for buffer size', 'No error message is available')
Weiß jemand, wieso?
Aber das Problem mit dem Beenden vom Programm bleibt
Um einen Prozess zu beenden, kannst du win32api.TerminateProcess(...) benutzen.

cu
Chris[/code]

Verfasst: Sonntag 6. Juli 2003, 19:48
von Glamdring
zu1 .: such mal unter Prozesse und nimm dann den Eintrag von meckse, da steht was von modifizierungen, vieleicht hilft dir das weiter.

zu2.: Danke

Gruß
Glamdring

Verfasst: Montag 7. Juli 2003, 10:56
von rAiNm4n
ok, da steht, man soll die imports überprüfen, aber ich kann bei mir nichts Fehlerhaftes feststellen...
Funktioniert es denn bei dir?

cu
Chris

Verfasst: Montag 7. Juli 2003, 15:07
von Glamdring
Habs eben erst getestet, nö geht auch net.

Gruß
Glamdring

Verfasst: Mittwoch 9. Juli 2003, 13:20
von NEBULA
Versuchts doch mal ueber WMI ;)

Ueber WMI kann man die ProzessID ermitteln und noch mehr Infos zum Prozess bekommen.
Mit der ProzessID kann man dann, wie hier schon erwaehnt, TerminateProcess aus der Windows-API aufrufen um den Prozess zu beenden.

Code: Alles auswählen

import win32com.client
        
wmi = win32com.client.GetObject("winmgmts:")
result = wmi.ExecQuery("SELECT * FROM Win32_Process")
Damit erhaeltst du schonmal alle Prozesse :)
Diese kannst du dann einfach in einer For-Schleife durchlaufen zB:

Code: Alles auswählen

For elem in result:
    print elem.ProcessId
Folgende Attribute hat Win32_Process:

Code: Alles auswählen

Caption
CreationClassName
CreationDate
CSCreationClassName
CSName
Description
ExecutablePath
ExecutionState
Handle
HandleCount
InstallDate
KernelModeTime
MaximumWorkingSetSize
MinimumWorkingSetSize
Name
OSCreationClassName
OSName
OtherOperationCount
OtherTransferCount
PageFaults
PageFileUsage
ParentProcessId
PeakPageFileUsage
PeakVirtualSize
PeakWorkingSetSize
Priority
PrivatePageCount
ProcessId
QuotaNonPagedPoolUsage
QuotaPagedPoolUsage
QuotaPeakNonPagedPoolUsage
QuotaPeakPagedPoolUsage
ReadOperationCount
ReadTransferCount
SessionId
Status
TerminationDate
ThreadCount
UserModeTime
VirtualSize
WindowsVersion
WorkingSetSize
WriteOperationCount
WriteTransferCount