技術メモ

AutoItで自動化

(更新 )

この記事にはプロモーション(広告)を含みます。 詳しくはこちら

 

目次
    1. ImageSearchの導入
    2. スクリプトの作成
    3. トラブルシューティング

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

 

動作確認

テストしてみましょう。

下記のスクリプトを保存します。

#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のある場所に移動すると思います。

 

スクリプトの作成

後は自動化したい操作をスクリプトに落とし込んでいくだけです。

例として順番にボタンを押す作業を自動化します。

上記の操作をスクリプトにすると下記のようになります。

; 画像認識ファイルの読み込み
#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の値を大きくしてみてください。

 

 

コメントを書く

コメントの取り扱いについては、プライバシーポリシーをご覧ください。

CAPTCHA