はじめに
Keystrokesコマンドの挙動を少し検証してみました。
こちらのコマンド、公式のドキュメントではDelayについては、「デフォルト値は0です。」としか書かれていません。
実際、最後の一文字の後に遅延は入るのかなど、謎が多かったので、挙動を可視化してみることにしました。
試した環境
Automation Anywhere Community Edition ver 11
LabVIEW 2019 Base Package
実験してみる
確かめたかったのは、コマンド内で設定できるDelayがどう働くのかと、どれくらいの精度でタイミングよく打ってくれるか。
また、コマンド間で遅延は発生するのか。など。
こんなようなBotを作成して、検証用のツールのユーザーインターフェースに文字を入力させます。
テスト用のツールはこんなようなものを用意しました。
LabVIEWという計測制御用の開発ツールで作りました。(2020年以降にCommunity Editionが出るみたいです。)
上の白い入力フォームに文字が一文字追加されると、チャートに波形として出てくるようになってます。
最速で1msの周期でアップデートされるように作っています。精度はそれなりです・・・。
結果
実際文字を打たせてみた結果が以下の通りです。
チャートの左から、以下のように文字を打った結果が波形として表示されています。
4 Keystrokes: ai in "test.vi" with delay: 1000 ms
5 Keystrokes: aiueo in "test.vi" with delay: 1000 ms
6 Keystrokes: aiue in "test.vi" with delay: 1000 ms
7 Keystrokes: aiueo in "test.vi" with delay: 1000 ms
チャートを見るとわかるのですが、以下の結果が得られました。
・設定したDelayの値は文字数で割られる。(文字列全体を何msかけて入力するか)
・コマンド間は若干遅れが生じる。
・文字入力間のDelayも若干揺らぎがある。(10msくらい?でも実使用上は問題にはならなそう。)
・Insert Keystrokesに記入した各文字の間だけでなく、最後の文字の後ろにもDelayが入る。
確認出来たこと
こんな事して何の意味があるの?と思われるかもしれませんが、
リモートデスクトップ越しのアプリケーション操作や、オブジェクトが取れないアプリケーションの制御の際に、仕方なくInsert Keystrokesを使うケースがありますが、
その際にこういった挙動を知っておくと、より的確にBotを組むことができます。
Insert Keystrokes内で長めにDelayを設定しておけば、直後にわざわざDelayコマンドを入れなくても済む。とか、
長い文字を打つときは文字数x文字間で待たせたいms分のDelayを設定しないといけない。とか。
その辺が確認できました。
今回判ったInsert KeystrokesのDelayに関する豆知識
- Delay = 入力する文字列全体を何msで入力するか。
- 文字間の遅延時間 = Delay/入力する文字数。
- 最後の文字の後ろにも遅延時間が入る。