news 【不具合情報】Windows 11物理環境において「Windowsフォアグラウンドタイムアウトを無効にする」設定がWindows OS再起動後に無効となる事象への対応について

Windows 11の物理PC・サーバーにてAutoMateを利用されている場合、Windows OSを再起動後に「Windowsフォアグラウンドタイムアウトを無効にする」設定が無効化されてしまうことにより、画面フォーカス操作に関連した不具合の影響を受ける恐れがあります。
以下、対象となるユーザー、改修見込、および暫定対応方法についてご案内いたします。

■対象となるユーザー・環境
サーバー版においては以下A, Bの2点、デスクトップ版においては3点すべてを満たす場合
A. Windows 11の物理PC・サーバーでAutoMateを利用している
B. タスク内で[ウィンドウ - フォーカス]アクションを使用している
C. Windows OSの再起動を実行する
上記に該当する場合、「Windowsフォアグラウンドタイムアウトを無効にする」設定が無効化されてしまうことにより、ウィンドウフォーカスの動作が失敗しタスクエラーが発生することがあります。

不具合の詳細につきましては以下記事をご参照ください。
・【不具合情報】Windows 11の物理PCとAutoMateの使用について

■改修見込時期
当不具合は2025年春頃にリリース予定の新バージョンにて改修見込みです。詳細なスケジュールについては製品開発元より公開され次第お知らせいたします。それまでは次項の暫定対応方法により回避をお願いします。
※大変恐れ入りますがサーバー版(Enterprise/Ultimate/Plus版)のAgent・Bot環境につきましては、タスクを改修する方法以外での回避策が現時点でございません。
タスクを改修する形での回避については、こちらの記事をご参照ください。

■暫定対応方法
デスクトップ版のユーザーにおかれましては、以下いずれかの方法でご対応いただきたく存じます。

[1] OSの再起動後、本不具合の影響を受けるタスクアドミニストレーターの項目を目視にて確認する
→タスクアドミニストレーター"オプション">システム設定>"実行"内のチェックボックスにチェックが入っている状態にしてください。

[2] 暫定対応用タスクを使用し、再起動後に項目の確認と有効化を行う
暫定対応用のタスクについては以下より入手してください。
バッチファイルとWindowsタスクスケジューラを併用して自動化することが出来ます。
なお、バージョンによりファイルが異なりますので、ご使用中のバージョンに合わせたものをダウンロードし、同梱の手順書に従ってご使用ください。
※バージョンの確認方法: (逆引きリファレンスより)使用中のAutoMateバージョンを確認する

AutoMate Desktopバージョン[11.7]用はこちら
AutoMate Desktopバージョン[22.1]用はこちら
AutoMate Desktopバージョン[23.1]用はこちら

ユーザーの皆様にはご不便、ご迷惑をおかけし大変申し訳ございません。

※本タスクのステップ1「タスクを15秒間停止する」について
→ログオン後に自動で立ち上がってくるウィンドウが全て開かれるのを待つため定義されています。
なお秒数に関しまして15秒としておりますが、お客様の端末の状態や環境によって不足する場合があります。その場合はお手数ではございますが、お客様のお手元で調節していただきたく存じます。


■補足:この不具合の詳細について
・本事象の原因:Windows フォアグラウンド タイムアウトの不正な有効化

Windows フォアグラウンド タイムアウトとは、ウィンドウの表示状況を制御する項目です。タスク内でウィンドウが開かれた際にオレンジ色に点滅することと、それによる制御不良を防ぎます。上述の通りWindows 11環境において、このチェックボックスが端末再起動後に無効となる挙動不具合が確認されています。
これにより、ウィンドウのフォーカス動作や操作ウィンドウの切替などの際に"ウィンドウがフォーカスできない"という旨のエラーが発生する場合があります。

確認方法
1)AutoMateタスクアドミニストレーターを開きます。
2)「オプション」→「システム設定」→「実行」と開きます。
3)「Windowsフォアグラウンドタイムアウトを無効にする」チェックボックスが外れていると、上記の不具合が発生する場合があります。

■回避タスク
「TaskService.config.xml」を参照し、画像認識を用いてAutoMateタスクアドミニストレーターを操作する
(参考: 画像認識の定義方法)

■概要
ユーザーの皆様のお手元の端末には、"C:\ProgramData\Automate\[ご使用のAutoMateバージョン]\TaskService.config.xml"というファイルが存在します。
このファイルは、AutoMateのタスクアドミニストレーターに保存されているユーザー設定を保持するファイルです。
xmlファイルの中に、"DisableForegroundTimeout"という項目があります。この項目の値は、「Windowsフォアグラウンドタイムアウトを無効にする」チェックボックスの
チェックが入っているかどうかを表しています。チェックが入っていればTrue、外れている場合はFalseと表示されます。
そのため、大まかな処理の流れとして、

1.「TaskService.config.xml」を参照し、「Windowsフォアグラウンドタイムアウトを無効にする」チェックボックスの状態を確認する。
2.Falseの場合、タスクアドミニストレーターを開く(Trueの場合はタスクを終了)
3.タスクアドミニストレーターを操作し、チェックボックスにチェックをつけ、適用する
4.タスクアドミニストレーターを閉じる

以上の処理構造を組み、「Windowsフォアグラウンドタイムアウトを無効にする」チェックボックスをチェックされている状態とします。
このタスクを、バッチファイルとWindowsタスクスケジューラを併用することで、端末再起動後に自動で起動できるようにします。

■タスク内容詳細
上記の流れを実際のアクションに落とし込んだ解説は以下の通りです。
なお、[]はAutoMateのアクションを示します。また本タスクでは、処理の安定性向上のために、適宜[Wait (時間)]アクションの使用、ならびにウィンドウ内バナーが表示された際の対処として[入力 -クリック][入力 -キーストロークの送信]などを使用していますが、以下の解説においては割愛させていただきます。

a.[時間(Wait)] タスクを15秒待機させる
b.[作成(変数)] 変数「var_win11」、「var_TorF」を作成する
→読み込んだxmlファイルの内容を格納するための変数「var_win11」と、識別した"DisableForegroundTimeout"の値を格納するための変数「var_TorF」を作成します。
c.[ファイルシステム -ファイルからの読み込み] "C:\ProgramData\Automate\ご使用のAutoMateバージョン\TaskService.config.xml"を読み込み、「var_win11」に格納する
d.[テキスト -検索]「var_win11」内の、の項目を検索し、値を識別、結果を「var_TorF」に返す
→この時、検索結果は項目ごと取得されてしまいますので、[テキスト -トリム]を使用し、不要部分を削除しています。
e.[if -条件式] 手順dの値を判定する
→手順dの値がFalseの場合、「Windowsフォアグラウンドタイムアウトを無効にする」チェックボックスのチェックが外れていることを意味します。したがって、以下の手順に進みます。
手順dの値がTrueの場合、この手順をもってタスクを終了します。
-------------e.条件式始め--------------
f.[入力 -キーストロークの送信] Windows+d を送信
→本タスクの処理に関係のない画面が表示されていると、タスクの失敗に繋がる恐れがあります。そのため、ショートカットキー「Windows+d」を使用して、デスクトップを表示させます。
g.[実行] AutoMateタスクアドミニストレーターを起動
→"C:¥ProgramFiles\ご使用のAutoMateバージョン\AMTA.exe"を参照します。
h.[ウィンドウ -最大化] AutoMate タスクアドミニストレーターを最大化
→タスク実行中の画面フォーカスのズレを防ぐため、AutoMate タスクアドミニストレーターのウィンドウを最大化します。
i.[作成(変数)] 変数「var_Tolelance」「var_option」「var_capturescreen」を作成
→画像の判定許容値を格納するための変数「var_Tolerance」、座標を取得したい対象の画像を格納するための「var_option」、画像認証の対象となる画像を格納するための「var_capturescreen」を作成します。
以下の手順においては、これらの変数を使いまわし、Loop処理を行っています。
j.[画像 -画面のキャプチャー] 現状の画面をキャプチャーし、「var_capturescreen」に格納
→この画像を判定条件として、以下のLoop処理で画像認識を行い、AutoMateタスクアドミニストレーターを操作します。
------以下Loop------
k.[画像 -画像認識] 「var_capturescreen」に、「var_option」のCenter位置座標を取得(値はデータセット「dataset」に格納)
l.[if -条件式] dataset.IsFoundがTrueならば、LoopをBreakする
→「dataset.IsFound」は、「var_option」のCenter座標を見つけられたかどうかを真偽値にて返します。つまり、「dataset.IsFound」=Trueとなった場合、現在の画面における取得したい画像の位置が見つかったことを意味しますので、LoopをBreakし、手順m.に進みます。
m.[変数 -増加] 変数「var_Tolelance」を10増加させる
→手順lがFalseとなった場合、判定許容値を上げます。
------Loopここまで------
n.[入力 -マウスの移動、クリック] 上記Loopにて取得した座標にマウスを移動、クリック

手順i~mまでを繰り返し、AutoMateタスクアドミニストレーターを操作します。
「オプション」→「システム設定」→「実行」→「チェックボックス」→「適用」の順に上記処理を実行します。

o.[ウィンドウ -閉じる] AutoMate タスクアドミニストレーターを閉じる
以上で処理を終了します。

重ねてにはなりますが、ユーザーの皆様にはご不便、ご迷惑をおかけし大変申し訳ございません。
今後とも弊社製品をご愛顧賜りますよう何卒よろしくお願い申し上げます。