PowerShellを使ってアプリの自動実行(その1)

 仕事で某BS有料放送の番組ページ等が3万ページ弱あるサイトのクロールをして、”Apache Solr”という全文検索システムで、番組キーワードに該当するページの検索結果をサイトのサムネイルとともに表示するシステムを管理してる。
 サムネイルを作成する現行システムはあるにはあるんだが、理由があってリプレイスしたいと考えている。サイトを巡回してサムネイルを作成するアプリケーション
をいろいろ探してるんだが、なかなかいいのがない。たまたま見つけたのが上のCrenaHtml2jpgと云うアプリ。コイツのイイところはGUI(グラフィカルユーザーインターフェース)とCLI(コマンドラインインタフェース)の両方で使えて、例えばサイトを巡回してバッチ処理的にサムネイルを作成するには、CLIを使えばいいのだ。
 だが色々試行錯誤したのだが、自分が管理しているサイトでは、GUIの方じゃないとちゃんとキャプチャーしてくんないということが判明。

 どうしたものかと思ってたらWindowsに標準でついてるPowerShellを使えば、GUIのテキストボックスとかにターゲットのURIを入力したり、実行ボタンを押してくれるスクリプトが書けるらしい。
 但し前準備が必要で、動かしたいアプリケーションのテキストボックスやボタン等の部品(オブジェクト要素)のプロパティを取得したり、書き換えたりするUIAutomation.dllというのをインポートする必要がある。


 先ずは、http://uiautomation.codeplex.com/ に行き、Downloadボタンを押してzipをダウンロード、
Documents\WindowsPowerShell\Modules\UIAutomation
に展開する。
 次にPowerShellを開いて、上記のディレクトリに移動し、下のコマンドを実行。

PS > Import-Module .\UIAutomation.dll

 Get-Moduleして以下のようにでてくればOK。

PS > Get-Module UIA*
ModuleType Version Name ExportedCommands
———- ——- —- —————-
Binary 0.8.7.79 UIAutomation {Add-UiaBannerText…

 そして、こんな感じでスクリプトを書いて、PowerShellに実行させるらしい。

$process = Start-Process -FilePath “C:\Program Files\CrenaHtml2jpg-v1.20\CrenaHtml2jpg.exe” -PassThru
$window = Get-UiaWindow -ProcessId $process.Id
$window | Get-UiaEdit -AutomationId ‘1010’ -Class ‘Edit’ -Name ‘http://www.yahoo.co.jp’ | `
Set-UIAControlText -Text “http://www.wowow.co.jp/detail/110495”;
$window | Get-UiaButton -Name ‘実行’ | Invoke-UiaButtonClick | Out-Null
$window | Get-UiaButton -Name ‘終了’ | Invoke-UiaButtonClick | Out-Null

 ちなみにこれは、CrenaHtml2jpg.exe のアプリケーションが、
“C:\Program Files\CrenaHtml2jpg-v1.20\”
にインストールされているという前提です。

ソフトウェア開発の素直研究所です。お仕事のご依頼はこちらからどうぞ!