2016-10-03 3 views
0

毎日使用するすべてのアプリケーションで起動してログインする起動スクリプトを作成しています。このため私はPyAutoGuiモジュール、Python 3、および私の2台のモニタで私のウィンドウのレイアウトを管理する別のアプリケーションを使用しています。PyAutoGuiモジュールは2回目の実行時にPermissionErrorを返します

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()が完全に正常に動作することです。アプリケーションが起動し、ログインし、ウィンドウを移動し、ホットキーで位置/サイズを調整します。 問題は、2番目の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とexceptブロック(使用しない)を使ってみましたが、アプリケーションが起動する順番を入れ替えました(num7はその前にnum1、その逆)、使用しません(1回目、2回目のクラッシュ)。

私はそれらを2つのファイルに分割し、3つ目の "main.py"ファイルから実行しようとしました。それは効率的ではありませんが、私は知っていますが、違いがあるかどうかを見たいと思っていました。あなたはそれを推測しました。 PermissionErrorでクラッシュします。

答えて

0

0.9.34では、これは修正されています(または、少なくともクリックはまだとにかく動作していると思われるので、少なくとも例外は抑制されています)。だから、解決策はPyAutoGUIをアップグレードすることです。

関連する問題