如果某个任务正在任务管理器中运行,我如何在 python 中使用 pywin 或 win32com.client 检查?

Posted

技术标签:

【中文标题】如果某个任务正在任务管理器中运行,我如何在 python 中使用 pywin 或 win32com.client 检查?【英文标题】:How can I check with pywin or win32com.client in python if a certain task is running in task manager? 【发布时间】:2019-08-27 09:10:23 【问题描述】:

我不得不说例如在任务管理器中运行的任务 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脚本在任务管理器中搜索一个进程,如果它没有打开就打开它或做其他事情。

谢谢

【问题讨论】:

【参考方案1】:

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 或其他属性。

【讨论】:

以上是关于如果某个任务正在任务管理器中运行,我如何在 python 中使用 pywin 或 win32com.client 检查?的主要内容,如果未能解决你的问题,请参考以下文章

在任务管理器中查找应用程序而不是进程的批处理文件

VB.Net从任务管理器中隐藏进程[重复]

如何在winXP中的任务管理器中隐藏程序?

在运行时,从 .Net 应用程序,如何设置任务管理器中显示的“描述”字段?

如何查看本地端口被进程占用的情况?

为啥我没运行winrar 却在任务管理器中每隔10秒左右出现一次