Prozesse unter Win NT

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
meckse
User
Beiträge: 5
Registriert: Mittwoch 2. April 2003, 14:26

Hallo zusammen,

ich habe folgendes Problem:
Ich möchte unter Windows NT überprüfen, ob ein bestimmtes Programm geöffnet ist. Wenn ja, möchte ich in diesem Programm eine Datei öffnen.

Meine Idee:
Überprüfen, ob es einen solchen Prozess gibt, wenn ja, die Prozess-ID herausfinden, dann Datei öffnen

Bis zur Prozess-ID komm ich noch, dann weiß ich nicht weiter. Wie kann ich eine Datei nun einem laufenden Prozess übergeben? Mir würde es schon ausreichen, wenn ich wüßte aus welchem Verzeichnis das Programm gesartet wurde (da verschiedene Versionen des Programms in unterschiedlichen Verzeichnissen installiert sein können). Dann würde ja ein WinExec-Aufruf funktionieren.

Hat jemand eine Lösung oder vielleicht eine bessere Idee?
Gast

Hi,
ich habe ein ähnliches Problem, allerdings
weiß ich noch nich mal, wie man die Prozesse
bzw. die Prozess-IDs herausfindet...
Könntest du vielleicht kurz beschreiben, wie
du das gemacht hast?
meckse
User
Beiträge: 5
Registriert: Mittwoch 2. April 2003, 14:26

Die Prozess-IDs zu einem bestimmten Prozessnamen bekommst Du mit
pids = win32.win32pdhutil.FindPerformanceAttributesByName(procname)

Eine Liste aller laufenden Prozesse (bzw. deren Namen) bekommst Du mit
win32.win32pdhutil.ShowAllProcesses()

Ich hoffe, das hilft Dir.
reggid
User
Beiträge: 120
Registriert: Dienstag 8. Oktober 2002, 19:04
Wohnort: Dinslaken
Kontaktdaten:

woher bekomme ich das win32 modul?
reggid
User
Beiträge: 120
Registriert: Dienstag 8. Oktober 2002, 19:04
Wohnort: Dinslaken
Kontaktdaten:

Ich hab das hier gefunden und auch installiert:
http://starship.python.net/crew/mhammon ... loads.html

Aber da war kein Modul win32 dabei :(
Woher bekomme ich das?
LuScHe
User
Beiträge: 19
Registriert: Samstag 21. Dezember 2002, 19:52
Kontaktdaten:

Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

LuScHe hat geschrieben:hier -->
Hallo!

Das Teil ist grottenalt und dürfte kaum mit einem aktuellen Python laufen (behaupte ich einfach mal). Es gibt auch gar kein Modul win32, zumindest nicht in den "Python Win32 Extensions" von Mark Hammond.
So müsste es gehen, zumindest vom Prinzip (von den Funktionen selbst habe ich keine Ahnung):
import win32pdhutil
...
win32pdhutil.ShowAllProcesses()
...
pids = win32pdhutil.FindPerformanceAttributesByName(procname)


Jan
reggid
User
Beiträge: 120
Registriert: Dienstag 8. Oktober 2002, 19:04
Wohnort: Dinslaken
Kontaktdaten:

geht nicht :(
bei

Code: Alles auswählen

>>> import win32pdhutil
>>> win32pdhutil.ShowAllProcesses()
kommt
Traceback (most recent call last):
File "<pyshell#1>", line 1, in ?
win32pdhutil.ShowAllProcesses()
File "C:\PROGRA~1\Python22\lib\site-packages\win32\lib\win32pdhutil.py", line 67, in ShowAllProcesses
items, instances = win32pdh.EnumObjectItems(None,None,object, win32pdh.PERF_DETAIL_WIZARD)
error: (-1073738824, 'EnumObjectItems for buffer size', 'No error message is available')

What shall I do?
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Ja, die Meldung krieg' ich auch. win32pdhutil ist undokumentiert und wird zudem irgendwo in den Quellen als quick-and-dirty bezeichnet. Da darf man nicht soviel erwarten. Die Google-Fundstellen zumindest lassen einen Bug vermuten.

Jan
meckse
User
Beiträge: 5
Registriert: Mittwoch 2. April 2003, 14:26

Schaut mal nach, ob in dem pdhutils-Modul die imports stimmen. Ich mußte da auch was ändern, damit es bei mir funktioniert hat.

Mein Problem habe ich inzwischen mit Perl gelöst, da gibt es ein Modul, mit dem man detaillierte Prozess-Informationen bekommt.
Antworten