Модуль PyAutoGui выдает PermissionError при втором запуске

Я пишу сценарий запуска, который запускается и регистрируется во всех моих приложениях, которые я использую ежедневно. Для этого я использую модуль PyAutoGui, Python 3 и другое приложение, которое управляет расположением моих окон на моих двух мониторах.

def smv(username, hotkey):
    # starting application
    os.system("smv.exe")
    # it autofocuses on the username field
    pyautogui.typewrite(username)
    # (passwords are the same)
    pyautogui.typewrite("PASSWORD\n")
    # move to the window header (where title, minimize, close, etc..)
    pyautogui.moveTo(100, 10, duration=0)
    # drag the window to the far right of the primary monitor (since pyautogui doesn't support multiple monitors)
    pyautogui.dragTo(1910, 20, duration=1, button="left")
    # press the hotkey that belongs to the window layout manager
    pyautogui.hotkey("ctrl", "alt", hotkey)

smv("username", "num7")
smv("username2", "num1")

Странно то, что первый smv() работает отлично. Приложение запускается, входит в систему, перемещает окно и регулирует положение/размер с помощью горячей клавиши. Проблема возникает при запуске второго smv(). Приложение запускается, входит в систему, переходит к заголовку окна, но затем вылетает с ошибкой:

Traceback (most recent call last):
File "main.py", line 15, in <module>
   smv("username2", "num1")
File "D:\files\PyCharm\startup\smv2.py", line 10, in start
  pyautogui.dragTo(1919, 10, duration=1, button="left")
File "d:\PortableApps\Miniconda3\lib\site-packages\PyAutoGUI-0.9.33-py3.5.egg\pyautogui\__init__.py", line 683, in dragTo
File "d:\PortableApps\Miniconda3\lib\site-packages\PyAutoGUI-0.9.33-py3.5.egg\pyautogui\__init__.py", line 274, in mouseDown
File "d:\PortableApps\Miniconda3\lib\site-packages\PyAutoGUI-0.9.33-py3.5.egg\pyautogui\_pyautogui_win.py", line 393, in _mouseDown
File "d:\PortableApps\Miniconda3\lib\site-packages\PyAutoGUI-0.9.33-py3.5.egg\pyautogui\_pyautogui_win.py", line 480, in _sendMouseEvent
PermissionError: [WinError 5] Access denied.

Ломаю мозг, пытаясь понять, почему он вылетает при втором запуске. Я пробовал использовать блоки try и кроме блоков (бесполезно), я менял порядок запуска приложения (номер1 перед номером7 и наоборот), но бесполезно (1-й запускается, 2-й вылетает).

Я даже пытался разделить их на 2 файла и запустить из третьего файла «main.py». Я знаю, что это неэффективно, но хотел посмотреть, имеет ли это какое-то значение... как вы уже догадались: это не так. Он все еще падает на PermissionError.


person Dutchman    schedule 03.10.2016    source источник


Ответы (1)


В 0.9.34 это было исправлено (или, по крайней мере, исключения теперь подавляются, так как клики все равно работают). Таким образом, решение состоит в том, чтобы обновить PyAutoGUI.

person Al Sweigart    schedule 19.03.2017