是否可以等待,直到Windows taskmanager中的任务停止?

时间:2019-01-07 19:45:12

标签: python python-3.x windows taskmanager

所以基本上,我希望python运行另一个程序,并等待该程序在taskmanger中不可见,然后继续执行脚本。 有任何想法吗?

3 个答案:

答案 0 :(得分:1)

如@eryksun所建议,子流程模块也可以处理等待:

import subprocess
process = subprocess.Popen(["notepad.exe"], shell=False)
process.wait()
print ("notepad.exe closed")

您可以使用类似这样的方法来跟踪已打开程序的进程ID:

import subprocess, win32com.client, time
wmi=win32com.client.GetObject('winmgmts:')
process = subprocess.Popen(["notepad.exe"], shell=False)
pid = process.pid
flag = True
while flag:
    flag = False
    for p in wmi.InstancesOf('win32_process'):
        if pid == int(p.Properties_('ProcessId')):
            flag = True
    time.sleep(.1)
print ("notepad.exe closed")

关闭记事本时的输出:

notepad.exe closed
>>> 

答案 1 :(得分:0)

这是一个简单的方法示例,用于查看使用内置tasklist命令的Windows是否正在运行某些东西:

import os
import subprocess

target = 'notepad.exe'
results = subprocess.check_output(['tasklist'], universal_newlines=True)

if any(line.startswith(target) for line in results.splitlines()):
    print(target, 'is running')
else:
    print(target, 'is *not* running')

答案 2 :(得分:0)

可以用pywinauto完成:

from pywinauto import Application

app = Application().connect(process=pid) # or connect(title_re="") or other options
app.wait_for_process_exit(timeout=50, retry_interval=0.1)