column

外部との連携 KompiraからWindowsGUIアプリケーションを操作する (1/2)

運用の中で既に利用されているアプリケーションを自動化することができれば、運用効率の向上が期待できます。しかし、そのアプリケーションのインターフェースがGUIしか存在しない場合、それを自動化することは容易ではありません。

そこで本稿では、「KompiraからWindowsGUIアプリケーションを操作する」方法(全2回)を紹介します。
初回である今回は、Windowsアプリケーション操作ライブラリFriendlyを用いて、Windowsの代表的なアプリケーションの「メモ帳」を操作します。
2回目は、KompiraからWindowsに接続し、メモ帳を操作する方法を紹介します。

図: 全体像

Windowsアプリケーションの自動操作

Windowsアプリケーションを自動操作する方法には、以下の2種類の方法が考えられます。

・マウスやキーボードをエミュレートする
・ボタンやテキストボックスなどUI要素にアクセスし操作する

ここでは、 時刻や内部データに応じて、UIの表示量や表示順が変わる場合でも、確実に操作できる「UI要素にアクセスし操作する」方法を取り上げます。

Friendly

Friendlyとは、Codeer社が開発したWindowsアプリケーション操作用ライブラリです。Friendlyを使用することで、対象アプリケーションに別のプロセスからアタッチし、操作することができます。

Friendlyによるメモ帳の操作

以下は、「メモ帳」の編集欄に任意の文字列を入力するコンソールアプリケーションのコードです。
このアプリケーションを実行すると、メモ帳を触ることなく、メモ帳に”buz”という文字列を表示することができます。

Friendlyライブラリの読み込み

Friendlyのライブラリを読み込みます。

Friendlyはnugetに登録されているので、プロジェクト設定ファイル.csprojに以下の設定を追加することで、使用することができます (※)。

※ または、以下のように開発環境上で以下のコマンドを実行すると、.csprojに自動的に上記が追加することができます。

プロセスへアタッチ及び構成要素へのアクセッサ取得

プロセスIDを指定し、メモ帳のプロセスへアタッチします。
メモ帳は、下図のように、「編集欄」と「ステータスバー」から構成されます。

図: メモ帳の構成

編集欄のIDを指定し、アクセッサ(text_edit)を取得します。

構成要素のIDを取得するためには、別途、アプリケーションの解析が必要となります。
アプリケーションの解析方法については、後ほど説明します。

編集欄への書き込み
取得したアクセッサを使い、文字列を編集欄へ書き込みます。

アプリケーションの解析

構成要素を指定・操作するためには、対象となる要素のIDを知っておく必要があります。IDは、専用のツールを用いてアプリケーションを解析することで得ることができます。

TestAssistant
TestAssistantはCooder社が提供するGUI解析用ツールです。以下からダウンロードすることで使用することができます。

https://www.codeer.co.jp/CodeAndTool

TestAssistantによるメモ帳の解析

それでは、TestAssistantを使って、メモ帳を解析してみましょう。

1. メモ帳を起動します
2. TestAssistantを起動します
3. メモ帳にアタッチします

テスト対象プロセス選択ボタンを押して、対象アプリケーション(=メモ帳)にアタッチします

4. 要素の解析を行います
4.1. トップレベルウインドウ解析ボタンを押下します

4.2. 中央ペインで、編集欄をクリックすると、右ペイン下の表に指定した要素の情報が記載されます

本稿では、DialogId=15を用いて、記入欄の要素にアクセスします(※)

※ 要素のIDには、複数の種類が存在します。アプリケーションによっては、同じIDを持つ構成要素が存在するため、状況に応じてIDを使い分けてください。

TestAssistantによる操作のキャプチャ

TestAssistantには、アプリケーションの操作をキャプチャする機能が存在します。この機能を用いることで、アプリケーション操作の実装が簡単になるため、覚えておいた方がよいでしょう。

1. メモ帳、TestAssistantを起動し、メモ帳にアタッチします
2. 「操作によるコード生成ボタン」を押下します

3. メモ帳の編集欄にフォーカスし、文字を入力します

4. 操作によるコード生成ウインドウに入力した文字列を入力する操作のコードが生成されます

5. OKボタンを押下すると、TestAssistantの左ペインに、以下のような「メモ帳の編集欄に文字列を追加する」操作のコードが追加されます。

まとめ
本稿では、Friendlyを用いてメモ帳を操作する方法を紹介しました。この方法を応用することで様々なWindows GUIアプリケーションを自動的に操作することができます。

次回は、今回説明した方法を拡張し、Kompiraからメモ帳を操作する方法をご紹介いたします。