首页 > 解决方案 > 如果某个任务正在任务管理器中运行,如何在 python 中使用 pywin 或 win32com.client 检查?

问题描述

我不得不说例如在任务管理器中运行的任务 firefox.exe。使用python`s win32com.client 我想检查firefox是否打开给一个消息,如果它没有打开给另一个消息或打开它或其他东西

我尝试打印所有进程,然后在 process.Name 的进程中搜索“firefox.exe”,但它不起作用

import wmi
import win32com.client

if win32com.client.GetActiveObject("firefox.application")
print("Running firefox !!!")
else:
print("No Firefox!!!")

这是我现在尝试过的,但它不起作用

我希望 python 脚本在任务管理器中搜索一个进程,如果它没有打开来打开它或做其他事情。

谢谢

标签: pythonpywin32taskmanagerpywin

解决方案


GetActiveObject用于获取对已在全局运行对象表中注册的 COM 对象实例的引用。这不是您真正需要的。不过,您可以使用 Windows 管理界面的 COM 接口来非常简单地获取进程列表。

import win32com
wmi = win32com.client.GetObject('winmgmts:')
pids = [p.ProcessId for p in wmi.InstancesOf('win32_process') if p.Name == 'firefox.exe']

因此,我们可以使用 WMI Win32_Process 类获取进程列表,并将其过滤为我们的可执行文件名称,并从进程对象中获取进程 ID 或其他属性。


推荐阅读