質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1892閲覧

pythonで実行ファイル化したEXEが、タスクスケジューラーから実行するとエラーになってしまう。

moyasi45

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/03 00:19

編集2020/08/03 01:40

前提・実現したいこと

今まで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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

ウイルスバスターが原因でスクリプトがタスクスケジューラーから実行されないことが分かりましたので。
自己解決しました。

解決方法
フォルダーシールドの無効化:該当するEXEファイルがあるフォルダーのチェックを外す

投稿2020/08/11 07:22

moyasi45

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

タスクスケジューラーから実行すると操作対象のアプリが前面で開きません。

タスクスケジューラーへの登録内容がおかしいのでは?

投稿2020/08/03 00:24

otn

総合スコア84540

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moyasi45

2020/08/03 00:52

タスクスケジューラーへの登録内容<全般> ユーザーがログオンしているときに実行する。 最上位の特権で実行する。 構成:windows10  としています。が問題があるでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問