python - 如果某个任务正在任务管理器中运行,如何在 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 脚本在任务管理器中搜索一个进程,如果它没有打开来打开它或做其他事情。
谢谢
解决方案
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-3.x - 如何解决 git commit 的错误数值错误?
- matlab - 提高矩阵滑动窗口求和的性能
- flutter - RenderCustomMultiChildLayoutBox 的每个子级都必须在其父级数据中有一个 ID
- android - 运行 React Native 应用程序时出错:无法安装应用程序。确保您已设置 Android 开发环境
- python - 如何从 discord.py 中的频道复制所有消息
- python - Django Rest Framework:如何使用 url 传递值并执行计算
- php - 实时更改 Wordpress
- jsf - 是否需要在 JSF 自定义组件的 decode() 中调用 setValid(true)?
- python - How to reverse the (key,value)'s order of a dict in the output?
- java - 使用@sql spring boot test从资源文件夹以外的自定义位置读取.sql文件