【问题标题】:Get list of Windows 8.1 processes using Python使用 Python 获取 Windows 8.1 进程列表
【发布时间】:2014-05-29 00:07:05
【问题描述】:

我想获取内存中的进程列表,包括 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 中有效。有人可以推荐其他方法吗?

【问题讨论】:

  • 实际的命令行还能用吗?
  • 是的。我可以在命令行 (cmd) 中运行“WMIC PROCESS get Caption,ProcessId”,这正是我想要的。

标签: python python-2.7 subprocess wmi pid


【解决方案1】:

您可以使用出色的跨平台psutil 库来代替繁琐的subprocess

使用通用的psutil.process_iter() 将允许您对它返回的Process 对象做任何您想做的事情(获取名称、pid、过滤您感兴趣的对象等)

例如

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

【讨论】:

  • 这是一个很好的解决方案,所以我将其标记为答案。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 2019-07-16
    • 1970-01-01
    • 2020-08-15
    相关资源
    最近更新 更多