Как предложил @eryksun, модуль подпроцесса также может обрабатывать ожидание:
import subprocess
process = subprocess.Popen(["notepad.exe"], shell=False)
process.wait()
print ("notepad.exe closed")
Вы можете использовать что-то вроде этого, отслеживая идентификатор процесса открытой программы:
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
>>>