使用Python获取Windows 8.1进程列表

时间:2014-04-14 20:48:49

标签: python python-2.7 subprocess wmi pid

我想获取内存中的进程列表,包括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 个答案:

答案 0 :(得分:2)

您可以使用fabolous,跨平台的psutil库,而不是繁琐的subprocess

使用通用psutil.process_iter()将允许您使用它返回的Process对象执行任何您喜欢的任务(获取名称,pid,过滤您感兴趣的对象等) 。)

E.g。

for proc in psutil.process_iter():
    print proc.pid, proc.name

答案 1 :(得分: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