【第26回】ロータス博士のWinActor塾~監視ルール
監視ルール
WinActorには監視ルールと呼ばれる機能が備わっています。
監視ルールをうまく使うことで、シナリオ作成者が意図しないタイミングで出現するウィンドウなどを検知して
任意の操作を割り込ませることが可能になります。
今回はこの監視ルールについてご説明します。
以前もWinActor ver6で解説しているが、今回は改めてver7での解説じゃ。
もっと詳しく挙動を知りたい方は以下の記事もチェックしよう。
まずは監視ルール一覧画面を表示させましょう。
監視ルール一覧は、画面下部にある機能編集エリアの「監視ルール」タブを選択することで表示されます。
※WinActor画面左上の「表示」→「監視ルール一覧」からでも表示が可能です
監視ルール一覧ツールバー
監視ルール一覧を編集するためのツールバーについて解説します。
監視ルール一覧画面上部には5種類のツールアイコンが用意されています。
これらは、それぞれ以下の機能を持っています。
監視ルール追加 | 監視ルールを追加します。監視ルール登録画面を表示します。 | |
監視ルール編集 | 監視ルールを編集します。 | |
監視ルール適用順位アップ | 監視ルールの優先度を上げます。 | |
監視ルール適用順位ダウン | 監視ルールの優先度を下げます。 | |
監視ルール削除 | 監視ルールを削除します。 |
優先順位のアップダウンは変数一覧と違って単に並び順を変えるものではない。
監視ルールを扱うなら、このツール操作は全て覚えておこう。
監視ルールの追加
では実際に追加の手順を説明しよう。
例として、メモ帳が表示されたら監視ルールに検知されるようにしてみるのじゃ。
まず、監視ルール一覧画面の「監視ルール追加」ボタンをクリックします。
ボタンをクリックすると、プロパティエリアに監視ルール登録画面が開きます。
監視ルールの設定はこの画面から行います。
今回は「メモ帳」を検知したいので、ウィンドウ識別名にメモ帳を登録しましょう。
ウィンドウ識別名のプルダウンに目的のものが無い場合は新規に登録する必要があります。
下図のようにターゲット選択ボタンをクリックし、マウスカーソルが変化したら、対象のウィンドウをクリックします。
マウスを対象のウィンドウに重ねると、黄色い縁取りでフォーカスされます。
この状態でメモ帳の画面をクリックすると新規にウィンドウ識別名が登録されます。
対処種別欄では以下のうちのどれかを選択することで、ウィンドウを検知した際の挙動を決定できます。
シナリオを停止する | 監視対象のウィンドウが表示されたときにシナリオを停止します。 |
例外を発生させる |
監視対象のウィンドウが表示されたときに例外処理に分岐します。 現在実施中のシナリオを中断し、例外処理に分岐する際に使用します。 この際「例外名」に指定した例外処理に分岐します。 |
サブルーチンを実行する |
監視対象のウィンドウが表示されたときにサブルーチンを呼び出します。 現在実施中のシナリオを中断し、サブルーチンでの操作が完了後、 中断した箇所から再開する際に使用します。サブルーチン名を指定します。 |
博士!これはどれを選択するのがベストなんでしょうか?
これはケースバイケースじゃな。監視検知したときにシナリオを止めたければ「シナリオを停止する」
後続作業をスキップしたいなら「例外を発生させる」、検知したものに対して何か処理をしてから
元のシナリオを続行したいなら「サブルーチンを実行する」を選択するのじゃ。
今回の例ではシナリオを停止させるため、「シナリオを停止する」を選択します。
設定が完了したら「OK」ボタンを押して登録を完了します。
検知例と注意事項
では先ほどの例を実行してみよう。
シナリオ実行中にメモ帳を起動したらどうなるかの。
今回はシナリオの停止を選択しているため
このようなポップアップが出てシナリオが止まったのじゃ。
なるほど、これはなかなかに便利ですね!
これからたくさん使っていこうと思います!
うむ、じゃが監視ルールを大量に増やしていくと、シナリオ実行速度に影響が出るのじゃ。
出現タイミングがわかっているポップアップは「ウィンドウ状態待機」ノードでも検知が可能じゃ。
監視ルールは適切なものに絞ろう。むやみやたらに登録するのはいかんぞ。
※監視ルールはシナリオ実行中に常にウィンドウを調べるため、ルールが多くなるにつれて実行速度が低下します
監視ルールによるウィンドウの検知はノードとノードの間で実行されます。
そのため、実行中のノードの処理が完了してから検知されることになります。
では実験じゃ。
待機時間1分のノードを設置して、実行してからメモ帳を開いてみよう。
あ!シナリオは動いたままですよ!
監視ルールには引っかかっていないようですね。
うむ。検知タイミングはノード遷移のときじゃから
この場合は1分待機が完了してから引っかかることになる。
現在処理中のノードだけはしっかりと終わってから、割り込まれるということじゃな。
てっきり途中で処理が打ち切られるのかと思いました。
ためになりますね。
そうじゃろう。皆さんもこの注意点をよく覚えて監視ルールを使いこなそう!
ちなみに実はこれ、ver6のときにも説明してるんじゃが…
あれれ、記憶が…メモリ不足かな…
関連記事こちらの記事も合わせてどうぞ。
2024.11.05
【第105回】ロータス博士のWinActor塾~新しい画像マッチング画面
2024.09.27
【第104回】ロータス博士のWinActor塾~ガイド利用シナリオ(作成編)
2024.09.10