У меня есть программа, которая управляет внешним приложением, используя поток. Я хочу иметь возможность вызывать метод abort () потока, чтобы закрыть внешнее приложение и немедленно прекратить все операции pywinauto. Вот упрощенная версия моей попытки:
from pywinauto.application import Application
import threading
import time
class MyThread(threading.Thread):
def run(self):
self.app = Application().start('C:\\WINDOWS\\system32\\notepad.exe')
window = self.app.window(title='Untitled - Notepad')
window.wait('ready')
while True:
window.menu_select('Edit->Select All')
def abort(self):
self.app.kill()
print("abort method complete")
thread = MyThread()
thread.start()
time.sleep(2)
thread.abort()
При запуске он ждет 2 секунды, как и ожидалось, затем печатает «abort method complete», а затем возникает длинная задержка и pywinauto.timings.TimeoutError
и pywinauto.findwindows.ElementNotFoundError
подняты. Это признак того, что pywinauto все еще выполняет операцию menu_select
даже после app.kill()
.
Есть ли способ заставить pywinauto немедленно прекратить любые активные операции?