Прервать операцию Pywinauto - PullRequest
       7

Прервать операцию Pywinauto

1 голос
/ 16 января 2020

У меня есть программа, которая управляет внешним приложением, используя поток. Я хочу иметь возможность вызывать метод 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 немедленно прекратить любые активные операции?

...