■UI自動化について考える。
- ウィンドウハンドルについて ←今ここ。
- アプリケーションのUIを分析する(Inspectツール)
- UIAutomationでUI操作してみる
- UIAutomationをWinActorに組み込む
WindowsAPIを介してウィンドウ操作する為の要素として、ウィンドウハンドルという言葉について触れておきます。
WindowsAPIとして、Windows上でプログラミングをする為に提供されているライブラリには、.NETフレームワークとWIN32APIというものがありますが、WIN32APIを使ってウィンドウを指定して何かしらの処理をする場合に必要になるウィンドウの管理番号がウィンドウハンドルです。
WinActorのライブラリにちょくちょく登場する(WIN32)というキーワード。
なんだかWIN32APIは、かなり歴史が古くOSのかなりネイティブな部分に干渉できる機能のようです。
WinActorのライブラリでは、[11 ウィンドウ関連] - [ウィンドウハンドル取得]を使えば簡単に対象ウィンドウのウィンドウハンドルを取得できます。
WinActorスクリプト上では、「GetUMSWindowHandle(ウィンドウ識別名)」でウィンドウハンドルが取得できる様にWinActor独自関数が組まれています。
このウィンドウハンドルはコンピュータが各ウィンドウに対して割り振る共通のものなので、完全に一意です。
別の方法でウィンドウハンドルを取得しても同じIDが取得されます。
試しにExcelのVBAでこんなコードを書くと、これだけでも起動中のExcelのウィンドウハンドルが取得できます。
Sub test() MsgBox Application.Hwnd End Sub
そして、こんなシナリオで同じExcelのウィンドウハンドルを取得してみても・・・。
同じIDが取得できていることが確認できる訳です。
「ウィンドウハンドルについて」への3件のフィードバック