ImageSearchの導入
AutoItには画像認識がないのでImageSearchというライブラリを使用します。
ダウンロード
ここからダウンロードできます。
32bit用と64bit用があるので環境に合った方をダウンロードします。
以下からの説明は64bitで進めますので32bitを使用する場合は適時置き換えてください。
インストール
ダウンロードしたものを解凍するとImageSearch.au3とImageSearchDLL.dllが出来るので、これをImageSearchが使いたいスクリプトと同じ場所に置きます。
使用方法
_ImageSearch($findImage,$resultPosition,$x, $y,$tolerance)
パラメータ | 概要 |
$findImage | 探したい画像ファイル |
$tolerance | 0は色の完全一致、数字を大きくすると色が違っていても認識するようになるが動作が遅くなる |
$resultPosition | 返ってくる画像の座標の中心=1か、左上=0か |
$x | 返ってくる座標x |
$y | 返ってくる座標y |
動作確認
テストしてみましょう。
下記のスクリプトを保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <ImageSearch.au3> HotKeySet("p", "checkForImage") global $y = 0, $x = 0 Func checkForImage() Local $search = _ImageSearch('button.bmp', 0, $x, $y, 100) If $search = 1 Then MouseMove($x, $y, 10) EndIf EndFunc while 1 sleep(200) WEnd |
次に保存したスクリプトとImageSearch.au3、ImageSearchDLL.dllと適当なボタンの画像を同じフォルダの中に入れます。
sample.au3を右クリックしてRun Script(x64)で実行してキーボードの「p」を押すとマウスがbutton.bmpのある場所に移動すると思います。
スクリプトの作成
後は自動化したい操作をスクリプトに落とし込んでいくだけです。
例として順番にボタンを押す作業を自動化します。
上記の操作をスクリプトにすると下記のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
; 画像認識ファイルの読み込み #include <ImageSearch.au3> ; ホットキーを設定、Escを押すと関数endScriptを実行 HotKeySet("{ESC}", "endScript") global $y = 0, $x = 0, $sleep_def = 2000 ; ボタン画像の配列 Local $ImageArray[4] $ImageArray[0]="button1.bmp" $ImageArray[1]="button2.bmp" $ImageArray[2]="button3.bmp" $ImageArray[3]="button4.bmp" ; ---------------------------------------------------------------------------- ; 関数定義 ; ---------------------------------------------------------------------------- ; クリック処理 ; $button_image_file_name : クリックしたい画像ファイル Func clickButton($button_image_file_name) Local $search = _ImageSearch($button_image_file_name, 1, $x, $y, 50) If $search = 1 Then MouseClick("left", $x, $y , 1 , 50) sleep($sleep_def + Random(500,2000,1)) EndIf EndFunc ; 終了 Func endScript() Exit 0 ; EndFunc ; ---------------------------------------------------------------------------- ; 処理 ; ---------------------------------------------------------------------------- while 1 For $i = 0 to 5 clickButton($ImageArray[$i]) Next WEnd |
ボタン画像はクリックしたい箇所を画像にして全て保存してください。
これを実行すると「Esc」キーが押されるまでbutton1.bmp、button2.bmp、button3.bmp、button4.bmpが見つかるとクリックしていくという挙動を無限に続けます。
トラブルシューティング
設定した画像が認識しない
色の僅かな違いで認識しないことがあるので設定を変更すれば認識するかもしれません。
$toleranceの値を大きくしてみてください。
コメント