【问题标题】:How can I check if a task in another program is done?如何检查另一个程序中的任务是否已完成?
【发布时间】:2019-05-24 15:49:27
【问题描述】:

我正在尝试为我的工作自动化一些东西,我想尝试的一件事是自动化病毒扫描。

基本上我想做的是在程序(恶意软件字节)完成扫描后做一些事情。我的第一个想法是获取 pc 上的进程列表并检查它们是否正在运行,但事实证明防病毒程序并没有像我希望的那样启动外部进程。

所以说实话,我现在有点不知所措。

我对任何想法持开放态度。

操作系统是 Windows。

一个例子是

if VirusScanDone():
    print("The scan is all done!")

【问题讨论】:

  • 你能举个例子输入和预期输出
  • 我认为这样做很大程度上取决于所使用的操作系统,因此我们需要知道您正在使用的操作系统。请根据您的问题标记您的问题。
  • @martineau 我编辑了这篇文章。这只是窗户:)
  • @ManojNirale 我不太理解示例输入/输出的意思。我基本上想检查病毒扫描是否完成,如果是的话就做点什么。我将使用带有一些 time.sleep 的 while 循环以固定的时间间隔检查它。
  • 检查您的 AV 提供商是否公开了服务(很多都这样做),然后您可以致电 QueryServiceStatus function 来检查状态。通常,在扫描时,它会启动然后停止。您也可以手动触发对文件的扫描(同样,基于 AV 引擎),然后等待进程停止。由于您将启动扫描仪 - 这将是一个单独的过程。

标签: python python-3.x windows automation


【解决方案1】:

您可以使用psutil 来执行此操作,获取您的进程名称并检查它是否正在运行 示例:

import psutil
def test_process(procname):
    for p in psutil.process_iter():
        if p.name() == procname:
            print(p.name(),"running")
            test_process(procname)
            break

test_process("PDFXEdit.exe")

我已经使用 pdfeditor 应用程序进行了测试,您可以在防病毒软件进程名称上执行此操作

【讨论】:

  • 感谢您的想法,但我已经尝试过了。正如我在我的问题中提到的,防病毒程序似乎没有从主程序启动外部进程。所以不幸的是,它似乎并没有通过任务管理器中的流程来工作。
猜你喜欢
  • 1970-01-01
  • 2021-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
相关资源
最近更新 更多