Seite 1 von 1

Prozesse unter Win NT

Verfasst: Mittwoch 23. April 2003, 14:54
von meckse
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?

Verfasst: Freitag 25. April 2003, 10:25
von 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?

Verfasst: Freitag 25. April 2003, 11:16
von meckse
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.

Verfasst: Samstag 3. Mai 2003, 20:57
von reggid
woher bekomme ich das win32 modul?

Verfasst: Sonntag 4. Mai 2003, 08:49
von reggid
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?

Verfasst: Sonntag 4. Mai 2003, 17:44
von LuScHe

Verfasst: Sonntag 4. Mai 2003, 18:24
von Voges
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

Verfasst: Sonntag 4. Mai 2003, 20:24
von reggid
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?

Verfasst: Sonntag 4. Mai 2003, 20:54
von Voges
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

Verfasst: Dienstag 13. Mai 2003, 09:24
von meckse
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.