さて昨日の記事でスクリプトから電卓を起動させることができました。
今回の記事ではUIAutomationSpyというツールを使って電卓の情報を取得し、スクリプトから電卓に入力させるところまですすめましょう。
Hello Worldのようなとても簡単なスクリプトですが、UIAutomationSpyというツールを使用したりするので、極端に退屈な作業にはならないと思います。
また今回の記事を読んで、他のアプリケーションでも同じような処理をしてみると、より知識が深まりそうですね。
では早速初めていきましょう!!
簡単におさらい
まず初めに昨日の内容を簡単におさらいしてみましょう。
0 1 |
Import-Module .\Modules\UIAutomation\UIAutomation.dll $process = Start-Process calc -PassThru |
- [ Import-Module ]コマンドレットでUIAutomationをインポート
- [ Start-Process ]コマンドレットで「calc(電卓)」を起動
「-PassThru」パラメータでプロセスのオブジェクトを取得しました。
…文にしてみるととっても簡単ですね。
では、冒頭でお話ししたUIAutomationSpyツールを使って電卓の情報をみていきましょう。
UIAutomationSpy
UIAutomationSpyは「Modules\UIAutomation\」に格納されています。
- 「Modules\UIAutomation\UIAutomationSpy.exe」を実行してみましょう。
- 次に「Start」ボタンをクリック。
するとカーソルの位置にあるボタンや入力欄の情報がUIAutomationSpyに表示されていると思います。 - この状態で電卓を起動し、各ボタンにカーソルを合わせてみましょう。
UIAutomationSpyの画面にいろいろと情報が表示されていますね。
ここで特に注目したいのは、
– Get-UiaButton -AutomationId ‘num2Button’ -Class ‘Button’ -Name ‘2’;
と
– Get-UiaWindow -Class ‘ApplicationFrameWindow’ -Name ‘電卓’
の部分です。つまり、電卓のウィンドウ名は’電卓’、電卓のボタン「2」はAutomationIdが「num2Button」で、クラスは「Button」、そして名前が「2」であることがわかりました。
この情報をもとにスクリプトを作成してみましょう。
スクリプトを書いてみよう!
0 1 2 3 4 5 6 7 |
Import-Module .\Modules\UIAutomation\UIAutomation.dll $process = Start-Process calc -PassThru $window = Get-UiaWindow -Name '電卓' $window | Get-UiaButton -Name '2' | Invoke-UiaButtonClick | Out-Null $window | Get-UiaButton -Name 'プラス' | Invoke-UiaButtonClick | Out-Null $window | Get-UiaButton -Name '5' | Invoke-UiaButtonClick | Out-Null $window | Get-UiaButton -Name '等号' | Invoke-UiaButtonClick | Out-Null |
簡単ですがこんなところでいいでしょう。
さて、スクリプトを実行してみましょう。
0 |
PS D:\WPS> .\Script\UIAutomationCalc.ps1 |
電卓が立ち上がり、アッという間に「7」という結果が表示されたと思います。
と、ここで一つ注意点です。
私はWindows10環境で動かしているので、8.1や7では動作が異なるかもしれません。
実際にUIAutomationSpyを使って各ボタンの情報を確認してみてくださいね。
スクリプトの内容を確認しよう。
では簡単にスクリプトの内容を確認してみましょう。
-
0$window = Get-UiaWindow -Name '電卓'
ここで電卓のウィンドウを特定しています。
(本来は$processから取得できそうですが…勉強します。) -
0$window | Get-UiaButton -Name '2' | Invoke-UiaButtonClick | Out-Null
特定したウィンドウの-Nameが’2’のUI要素を探し出し、[ Invoke-UiaButtonClick ]でシングルクリックします。
[ Out-Null ]パラメーターは取得した出力結果を破棄します。
つまり、上記の命令で本来PowerShellに出力される内容を、出力しないように設定しています。
内容だけ見ると全然難しくないように感じますね。
まとめ
今回の記事でアプリケーションのUI要素(ボタンや入力欄)の情報を取得し、スクリプトから操作することができました。
あとはプログラムと同様に制御文を記述すれば延々と計算させ続けるようなことも簡単にできそうです。
では次回の記事で電卓に30秒間ほど延々計算させ続けるようなスクリプトを書いてみましょう。
// ——– ——– ——– ——– ——– ——– ——– ——–
UIAutomationでアプリケーション操作を自動化しよう! その1
UIAutomationでアプリケーション操作を自動化しよう! その2
UIAutomationでアプリケーション操作を自動化しよう! その3
UIAutomationでアプリケーション操作を自動化しよう! その4
// ——– ——– ——– ——– ——– ——– ——– ——–