WinHanCol
WinHanCol
アプリケーション画面調査

WindowHandleCollector について

本アプリケーションは、他のアプリケーションを構成するウィンドウ(画面、入力部品、ラベル等)の一覧を調査することを目的としています。 既存のアプリケーションのテキスト入力欄に文言を挿入するためには、相手側の持っている機能を利用するか、内部構造を調べてテキスト入力欄を探す処理を作る必要があります。 本ツールは稼働中のアプリケーションを構成する部品(クラス)を調査し、部品にアクセスするための固定的な情報(“クラスパス”と呼びます)を作成します。 同種のアプリケーションとしてはMicrosoft Spy++ があり、特にVisual Studio を使用している開発者に使用されています。

使い方

以下、メモ帳のページ設定画面を例に操作方法を説明します。 はじめにメモ帳を起動し、ファイルメニューからページ設定画面を開いておきます。

本ツールを起動すると、画面の左側に実行中のアプリケーションのウィンドウ一覧が表示されます。 このリストからメモ帳(notepad)の “ページ設定” ウィンドウを選択します。

ウィンドウ選択

画面右側に、画面の構成部品の情報が表示されます。

  1. ハンドル
  2. 各部品を表す一意の値で、実行時にOSから値を割り当てられます。
  3. 文言
  4. 見出しの文言や現在のテキスト入力値です。
  5. クラス名
  6. アプリケーション内で、部品の種類に与えられた名前です。同一の画面におなじ部品が複数あると、クラス名だけでは見分けがつきません。

続いて右の表からいずれかの部品を右クリックし、コンテキストメニューから座標確認を実行します。 ここでは “用紙” という文言の設定された部品を選択しています。

メモ帳のページ設定画面上に、次図のような囲み線が表示されます。

囲み線表示

今度はメモ帳のページ設定画面上にマウスカーソルを移動すると、本ツールの右画面で該当の部品が赤文字に変わります。 これらの機能により、ページ設定画面を構成する部品を調べることができます。

さらにメッセージ送信メニューでは、テキストの送信を試すことができます。 ここでは例として、ページ設定画面の “フッター” 欄に何か入力してみます。 ページ設定画面には、Editというクラスの部品が6個あります。 前項の座標確認やマウスカーソルからの判別機能にて、6つ目の Edit がフッター入力欄であることが分かります。 これを選択し、コンテキストメニューからメッセージ送信を実行すると、次図のような送信テキスト小画面(ダイアログ)が表示されます。 適当な文言を入力してOKボタンを押下すると、入力値がメモ帳ページ設定画面に送信されます。

自作のアプロケーションからアクセスする際は、以下のような情報が必要になります。

  1. プロセス名
  2. 「notepad」
  3. 複数の画面が開いている場合は、ウィンドウテキスト
  4. 「ページ設定」
  5. フッター入力欄のクラス名
  6. 「Edit」
  7. 出現順序
  8. 6個目

メモ帳のページ設定画面は全ての部品が同列に配置されていましたが、複雑な画面ではクラスが入れ子(階層構造)になっている場合があります。 本ツールにおいてクラスの階層と出現順序を表記する書式を、“クラスパス” と呼びます。

クラスパス

(例)Wordの文字の効果の設定のクラスパス
MsoCommandBarDock[1]\MsoCommandBar\MsoWorkPane

クラスの階層を \(バックスラッシュ)で区切り、出現順序を付番して[n]で表します。

制限事項