Pyinstallerで実行ファイルを作成した際のエラー一覧(対処法を研究)その②
前回の続きです。
前提条件
・OSは両方ともWindows10
・python、pyautoguiのバージョンは両方とも同じ
・解像度が異なるので、画像認識用の画像はそれぞれの環境で別に準備
環境構築用のPCでは動いていたが、別のPCでは動かない。
(前工程は省略しました。特定のウィンドウを表示させます)
ウィンドウ内にあるアイコン画像を認証させます。
↓
moveToメソッドでアイコン位置までカーソルを移動
↓
そのアイコンをクリックしようとするという単純なもの。
アイコンの場所までカーソルを移動させるところまでは動きましたが、アイコンをクリックすることができません。
import pyautogui as pag
import time
#アイコン画像を取得するまでウエイトする。
while pag.locateOnScreen('アイコン画像名.png',confidence=0.9) is None:
pag.sleep(1)
loc=pag.locateOnScreen('change.png',confidence=0.9)
time.sleep(1)
pag.moveTo(loc)
time.sleep(1)
※ここでクリックが動作しない…
pag.click()
試してみたこと
pag.position()でアイコンの場所は取得できていることを確認
デスクトップ上のアイコンはクリックできるが、ウィンドウを表示させるとクリックできないことを確認
click()からdoubleClick()に変更→動作せず
clickからmouseDown(),mouseUpメソッドに変更→動作せず
click(clicks=2)でクリック回数を指定→動作せず
clickからhotkey(),press()などのキー操作での操作を試みるが動作せず
こちらのサイトを参照にwin32gui.FindWindow()を用いてウィンドウをアクティブするもクリックできず。
エラーの原因は?
原因は実に単純でした。pythonを「管理者権限で実行する」ことで改善しました。
ちなみにPyinstallerで実行ファイルを作成した場合は、実行ファイルを管理者権限で実行すれば動きます。
結論:動かない時は管理者権限で実行させる
どうせならすべて動かなくなってくれれば分かりやすいんですけどね。今回のように、中途半端に動かないのが分かりにくい点でもありました。
こんな時は・・・
「ある程度詰まったら休憩♪」
これを忘れないようにしましょう。休憩後に考え直してみると思わぬ発見があることが多いです。今回もゆっくりコーヒーを飲みつつ考え直したらあっさり解決しました(笑)
今回と前回の記事が皆さまのお役に立てれば幸いです。