【发布时间】:2019-01-27 02:29:09
【问题描述】:
我目前正在自动化一个涉及运行 Hapfacs 3.0 的过程,这是一个用于构建面部图像的 C# 程序。我正在使用python打开程序,设置一些参数,然后保存生成的图像。自动化将执行此过程 1000 次。保存过程包括打开文件资源管理器(我在 Windows 7 上),输入文件名,然后保存。
我遇到的一个问题是文件资源管理器有时需要一段时间才能打开,这会干扰自动化,因为程序在文件资源管理器窗口打开之前就开始输入文件名。
我想让程序在开始输入之前等待文件资源管理器打开。因此,我需要能够判断文件资源管理器是否打开。我在这里找到了这个页面:
Python check if a process is running or not
建议使用 psutil 模块:
import psutil
"someProgram" in (p.name() for p in psutil.process_iter())
但是列表
[p.name() for p in psutil.process_iter()]
如果文件资源管理器打开与关闭时相比没有什么不同,这表明文件资源管理器从未添加到列表中。我仍然可以检查文件资源管理器是否已使用 psutil 打开,还是有其他方法可以实现我的目标?感谢您的帮助。
【问题讨论】:
-
文件资源管理器几乎总是打开的。当您要求 Windows,例如,
explore C:\Spam,explore.exe程序启动,找到您现有的文件资源管理器进程,告诉它为C:\Spam打开一个窗口,然后退出。所以,完成之后,运行的进程集通常会和之前完全一样。 -
那么如何判断文件资源管理器的窗口是否打开?无论文件资源管理器的窗口是否打开,[p.name() for p in psutil.process_iter()] 中的代码“explorer.exe”都会评估 True。
-
如果 any 窗口打开?或者导航到某个特定目录的任何窗口?还是您可以通过某种方式识别但尚未解释的特定窗口?
-
是的,当然是真的。正如我所说,文件资源管理器几乎总是打开的,所以几乎总是可以在
process_iter中找到它。 -
如果我能判断导航到特定目录的文件资源管理器窗口是否打开,那就可以了。
标签: python automation psutil