2011年6月26日日曜日

AutoIt マウス自動操作スクリプト

アナログ停波も近いというので、ビデオのエンコード環境を地デジに移したんだけど、たまにエラーを含んだファイルが出来上がってしまってエンコードに失敗する。
そのエラーファイルを訂正して直してくれるツールが有るんだけど、それがGUIアプリでマウスでポチポチやってやらないと動かずバッチ処理の妨げになってて困る。

そんな中、マウスを自動操作できるツールを見つけた。
AutoIt - AutoItScript

なかなかしっかりした作りでヨサゲな感じ。スクリプトファイルをコンパイルしてexeをつくることも出来るのでAutoIt環境が無いマシンでも気軽に試すことができる。ただ、日本語対応と64Bit対応が若干怪しいのが気がかり・・・

とりあえず自分メモ的にインストール手順を記録しておく
・AutoIt本体のダウンロード&インストール
特に気にせず次へ次へ・・・
・AutoIt Script Editorのダウンロード&インストール
AutoIt Script Editor Downloads - AutoItScript
ここから入れられる。これも気にせず次へ次へ

・環境設定
mga8cak.sitemix.jp/PDF/autoit_jp.pdf
このpdfファイルが、なんか一番詳しそう。
OptionのOpen User Options fileを開いてコードページの設定

code.page=932
character.set=128

64Bit環境だとAU3Record(操作マクロ記録ツール?)が動かない。DLL load Failed とかいうエラーで落ちるので、C:\Program Files (x86)\AutoIt3\Extras\Au3Record フォルダにあるAu3Record_x64.exe をどこかに退避してAu3Record.exeをコピーしてAu3Record_x64.exe にしてやる。ようは32Bit用のアプリが起動するようにファイル名を細工してやると上手く動くっぽい

AU3Recordでのウィンドウタイトル取得の文字化け
なんか、ウィンドウの表示街にタイトルバーの文字列を使ってるみたいなんだけど、これが日本語だと文字化けして???みたいになって使えない。原因はよく分からないけど、AU3Recordをエディタからじゃなくて C:\Program Files (x86)\AutoIt3\Extras\Au3Record フォルダから直接起動してやると上手く取得できるみたい。
もしかしたら、AU3Record自体は取得してるけど、エディタへ渡すときにバグってるのかもしれないね・・・よくわからんので、ちと面倒だけど単体起動してスクリプトをコピペしながら使ってる

座標モードの変更
AU3Recordはマウスのクリック座標とかはウィンドウ相対座標で返してくれるんだけど、どうもスクリプト自体はデフォルト値が絶対スクリーン座標みたいだ。なので、出来上がったスクリプトをそのまま動かすと画面の左上のほうをクリックしまくって大惨事になることもw デスクトップは綺麗にしておきましょう・・・
で、座標系モードを変更するのに加えて、AU3Recordが吐き出すWindow表示待ちテンプレート関数?を含めたコードを新しいスクリプトを書くコピペ元としてここにメモしておく
Func _WinWaitActivate($title,$text,$timeout=0)
 WinWait($title,$text,$timeout)
 If Not WinActive($title,$text) Then WinActivate($title,$text)
 WinWaitActive($title,$text,$timeout)
EndFunc
Opt("MouseCoordMode", 0)
Opt("PixelCoordMode", 0)

これで、バッチ処理にGUIアプリを組み込めるようになるかなー なんかバグってとんでもないアイコンとかクリックしまくりそうで怖いw

2 件のコメント:

sekine360 さんのコメント...

こんなのもあったり。試したこと無いですけど。
http://sikuli.csail.mit.edu/

Chishow さんのコメント...

こんなのもあるのか、こっちのほうがなんかグラフィカルな感じだな
どっちがいいんだろー