Windows Tasks ausgegeben.. ?

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
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

Hallöchen. Weiß jemand, wie ich mir unter Windows die aktuellen Tasks ausgeben lassen kann ? Ich möchte überprüen, ob ein Prgramm breits gestartet wurde oder nicht. Danke im Vorraus.
Das ist kein Hakenkreuz - Das ist das neue Python-Symbol!
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Das tust du über prozesse, tasks sind die offenen fenster
http://mail.python.org/pipermail/python ... 01482.html
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
fhoech
User
Beiträge: 143
Registriert: Montag 9. April 2007, 18:26

Falls Du auf das pywin32- oder WMI-Modul verzichten willst, könnte auch folgender Code interessant sein, der mit Windows-Bordmitteln und der Python-Standardbibliothek funktionieren sollte:

Code: Alles auswählen

import subprocess as sp

def win_getprocessinfo(imagename=None):
	"""
	Return a list with information about running process(es).
	
	imagename   filter results by process name as string or None
	
	The returned list is empty if there are no matching processes,
	otherwise it contains dict(s) with the actual process information.
	
	"""
	processinfo = []
	args = ['tasklist', '/FO', 'csv', '/NH']
	if imagename:
		args.extend(['/FI', 'IMAGENAME eq ' + imagename])
	tasklist = sp.Popen(args, stdout=sp.PIPE)
	for line in tasklist.communicate()[0].splitlines():
		fields = line.strip('"').split('","')
		if not imagename or fields[0].lower() == imagename.lower():
			processinfo.append({'imagename': fields[0], 
								'pid': int(fields[1]),
								'session_name': fields[2],
								'session_no': int(fields[3]),
								'memory_kb': int(fields[4].replace(',', '').replace('.', '')[:-2])})
	return processinfo

if __name__ == '__main__':
	from pprint import pprint
	import os
	import sys
	
	if len(sys.argv) > 1:
		for argv in sys.argv[1:]:
			pprint(win_getprocessinfo(argv))
	else:
		pprint(win_getprocessinfo(os.path.basename(sys.executable)))
Ausgabe z.B.:

Code: Alles auswählen

>>> from pprint import pprint
>>> pprint(win_getprocessinfo('python.exe'))
[{'imagename': 'python.exe',
  'memory_kb': 7108,
  'pid': 4684,
  'session_name': 'Console',
  'session_no': 1}]
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

Das erste Beispiel ist super - Denn sogor ich kriege es ans laufen ;) Vielen dank dafür, Herr INFACT.

Das zweite hört sich sehr spannend an, allerdings bin ich zu doof dazu ^^ Ich hab mal folgendes Experiment versucht:

Code: Alles auswählen

Processname = "Pythonwin.exe"
Arguments = ['tasklist', '/FO', 'csv', '/NH'].extend(['/FI', 'IMAGENAME eq ' + Processname])
Processinfo = subprocess.Popen(Arguments, stdout=subprocess.PIPE)
Kann mir jemand sagen, was dor Funktionen .extend und .Popen machen ? Und wie selbst ich so ein einfaches Beispiel hinkriege ? ^^
Das ist kein Hakenkreuz - Das ist das neue Python-Symbol!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Bong-Jour hat geschrieben:Kann mir jemand sagen, was dor Funktionen .extend und .Popen machen ?
Also ehrlich, die Dokumentation wirst du wohl noch selbst lesen können, oder?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

@Leonidas: Ich glaube nicht, dass fhoech's Beispiel in der Documentation erklärt wird, also spar ich mir solchen Unsinn..


Weiß jemand, wie er auf

Code: Alles auswählen

subprocess.Popen(['tasklist', '/FO', 'csv', '/NH', '/FI', 'IMAGENAME eq Pythonwin.exe'], stdout=subprocess.PIPE)
kommt ? Wo hat er die Parameter her ? Und wieso funktioniert es so nicht.. ?
Das ist kein Hakenkreuz - Das ist das neue Python-Symbol!
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Weil du wahrscheinlich die tasklist.exe nicht hast. Wenn ich mich richtig erinnere, dann ist tasklist.exe nicht bei allen Windowsversionen enthalten - du kannst es dir aber auch manuell runterladen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Bong-Jour hat geschrieben:@Leonidas: Ich glaube nicht, dass fhoech's Beispiel in der Documentation erklärt wird, also spar ich mir solchen Unsinn..
Nein, aber wie ``extend`` und ``Popen`` funktionieren. Und das hast du gefragt.

Du Parameter hat er wohl aus der Online-Hilfe von Tasklist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

Nein, aber wie ``extend`` und ``Popen`` funktionieren. Und das hast du gefragt.
Aber das steht doch in der Dokumentation.. ?! :lol: :wink: Ich streite das jetzt einfach hab und behaupte meine Frage bezog sich auf das obige Beispiel ^^


Ich dachte tasklist wär irgendein geheimer Konsolenbefehl, den nur Profis kennen und der bei help nicht aufgelistet wird ^^ Wenn ich dafür ein Programm installieren muss, bleib ich lieber bei dem ersten Besipiel. Danke alle für eure Hilfe =)
Das ist kein Hakenkreuz - Das ist das neue Python-Symbol!
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Das ist ein "Programm" direkt von Microsoft, das man aber ganz einfach mitliefern kann, da es nur eine .exe ist und wesentlich viel weniger Speicher und Aufwand benötigt als pywin32 (außer pywin32 ist sowieso schon installiert).
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ist die Frage ob man es laut Lizenzbedingugnen überhaupt mitliefern *darf*.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

Zusatz: Kann ich mir eigentlich auf diese Weise auch alle laufenden Programme anzeigen lassen ? Und eventuell ein paar Information über die Programme bekommen ? Zum Beispiel ob es grade auf der Taskleiste blinkt oder ähnliches.
Das ist kein Hakenkreuz - Das ist das neue Python-Symbol!
fhoech
User
Beiträge: 143
Registriert: Montag 9. April 2007, 18:26

Welche Windows-Version hast du denn? Ich dachte immer, tasklist.exe sei seit XP standardmässig dabei. Aber ich kann mich natürlich irren.
Bong-Jour
User
Beiträge: 54
Registriert: Donnerstag 24. Juli 2008, 13:14
Kontaktdaten:

Tasklist scheint er auch zu erkennen. Es erscheint dann die Meldung framedyn.dll konnte nicht gefunden werden
Das ist kein Hakenkreuz - Das ist das neue Python-Symbol!
Antworten