使用Python获取Windows 8.1进程列表
我想在Windows 8.1中获取内存中进程的列表,包括进程名称和PID(进程标识符)。
这是我的代码:
import subprocess
import os
cmd = "WMIC PROCESS get Caption,ProcessId"
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in proc.stdout:
# Additional logic here
这个循环从来没有执行过。这个代码在早期版本的Windows 8中是可以工作的。有人能推荐其他的方法吗?
2 个回答
1
Shx2,感谢你的回复。虽然你的解决方案更适合多平台支持,但由于我只在使用Windows 8.1,所以我选择了这个方案。
from win32com.client import GetObject
Wmi = GetObject('winmgmts:')
processes = Wmi.InstancesOf('Win32_Process')
# Get the Explorer process
explorer = Wmi.ExecQuery('select * from Win32_Process where Name="explorer.exe"')
# Grab its Pid
processId = explorer[0].Properties_('ProcessId').Value
3
与其使用麻烦的 subprocess
,不如试试这个很棒的、跨平台的 psutil 库。
使用通用的 psutil.process_iter()
方法,你可以对它返回的 Process
对象做很多事情,比如获取进程名称、进程ID,或者筛选出你感兴趣的进程等等。
例如:
for proc in psutil.process_iter():
print proc.pid, proc.name