前提・実現したいこと
今までUWSCで行っていた、業務用アプリの自動操作を、pythoneで操作しようとしています。
内容は社内アプリであるMenu.EXEをキー入力で操作し、定時に指定のファイルを出力する簡単なものです。
pyinstallerで実行ファイルし、ダブルクリックでは問題なく動作するところまで、なんとかたどり着いたのですが、タスクスケジューラーから実行すると操作対象のアプリが前面で開きません。
そのためエラーが発生してしまいます。
エラーメッセージの「outoput」はoutoput.exeという実行ファイルを指しています。
発生している問題・エラーメッセージ
failed to execute script python.outoput
該当のソースコード
# -*- coding: utf-8 -*- import pyautogui as ag import subprocess as sp import pyperclip import time import datetime as dt import os import sys import win32gui sp.Popen(R"C:\topics\exe\Menu.EXE") time.sleep(1) MenuID=win32gui.FindWindow(None,'Menu Ver5.2.0') win32gui.SetForegroundWindow(MenuID) def resource_path(relative_path): if hasattr(sys, '_MEIPASS'): return os.path.join(sys._MEIPASS, relative_path) return os.path.join(os.path.abspath("."), relative_path) time.sleep(3) ag.press("right") ag.press("right") ag.press("right") ag.press("right") ag.press("right") ag.press("tab") ag.press("right") ag.press("tab") ag.press("enter") time.sleep(1) ag.hotkey( "alt", "f") ag.press("o") pyperclip.copy(r"P:\s伝票\AAAA.Hu2") time.sleep(1) ag.hotkey( "ctrl", "V") ag.press("enter") time.sleep(1) now = dt.datetime.now() try: x,y = ag.locateCenterOnScreen(resource_path("jyoken.png")) ag.click(x,y) except Exception as ex: print("条件が見つかりませんでした。") file = os.path.abspath("error.txt") fileobj = open(file, "a", encoding = "utf_8") fileobj.write("条件が見つかりませんでした。") fileobj.write("{0:%Y%m%d_%H_%M_%S}\n".format(now)) sys.exit( ) time.sleep(8) ag.press("tab") ag.press("tab") ag.press("tab") ag.press("tab") ag.press("tab") ag.press("tab") ag.press("tab") ag.press("tab") i = dt.date.today() i = "{0:%Y%m%d}".format(i) pyperclip.copy(i) ag.hotkey( "ctrl", "V") ag.press("tab") ag.press("tab") ag.press("tab") ag.press("tab") ag.press("enter") try: x,y = ag.locateCenterOnScreen(resource_path("output.png")) ag.click(x,y) except Exception as ex: print("出力が見つかりませんでした。") file = os.path.abspath("error.txt") fileobj = open(file, "a", encoding = "utf_8") fileobj.write("{0:%Y%m%d_%H_%M_%S}\n".format(now)) sys.exit( ) time.sleep(8) pyperclip.copy(r"P:\s伝票\AAAA.XLS") time.sleep(1) ag.hotkey( "ctrl", "V") ag.press("enter") time.sleep(10) try: x,y = ag.locateCenterOnScreen(resource_path("end.png")) ag.click(x,y) except Exception as ex: print("終了が見つかりませんでした。") file = os.path.abspath("error.txt") fileobj = open(file, "a", encoding = "utf_8") fileobj.write("{0:%Y%m%d_%H_%M_%S}\n".format(now)) sys.exit( ) time.sleep(8) ag.press("tab") ag.press("enter") ag.press("f12")
問題かもしれない点
ダブルクリックとタスクスケジューラーから実行する際ではウインドウIDの取得方法が違うのではと調べましたが、解決には至りませんでした。
現状
EXEファイルをダブルクリック:問題なし
EXEファイルをCMDで実行:問題なし
EXEファイルをBATから実行:問題なし
EXEファイルをタスクスケジューラーで実行:背面でfailed to execute script python.outoput
EXEファイルをBATからタスクスケジューラーで実行:最前面でfailed to execute script python.outoput
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。