#2015/07/27#
最近在自己的電腦使用AutoIT的imagesearch來找圖片,但很奇怪的是會出錯,而且還是出在include裡的imagesearch.au3,其訊息如下:
;if $result[0]="0" then return 0
;if $result^ ERROR
這蠻奇怪的,在公司使用了好多年都沒問題,為何在家裡才要開始用就有給我出問題,當然先上網搜尋,看看是否可快速找到解答,還好很好運的找到作者更新的版本,我記得這個我有下載過,於是跟目前用的比較了一下差異,發現我用的是舊版本。
而且這2012的新版,可以不用限定bmp格式,於是我就用png格式來測試,果然可以正常運作了。
有點印象過去有處理過這種遭遇,但太久忘記了怎處理,想不起來過去是如何處理的,當時也沒做紀錄,今天就給它記下來,尤其是這種裝好後就忘了它的存在,過幾年後,大概連自己有發這篇記錄,也許也會忘了也不一定,XD,佛法說,諸法因緣生,諸法因緣滅,一切無常,所以記憶力也是無常的,偶是見證者。
ImageSearchDLL.dll
放到AutoIT3安裝的目錄。
ImageSearch.au3
放到AutoIT3安裝的目錄下的include資料夾。
使用:
#include <ImageSearch.au3>
裡面我只用過_ImageSearch Function:
_ImageSearch($findImage,$resultPosition,ByRef $x, ByRef $y,$tolerance, $HBMP=0)
範例:
$result = _ImageSearch(@ScriptDir & "\pic\" & $imageName,1,$x,$y,0)
_ImageSearch會以整個桌面做為搜尋對象。
找到圖片會傳回1,否則傳回0
$resultPosition若是1,則傳回圖片中央的座標位置,若是0則傳回左上方的座標位置。
$HBMP是什麼碗糕,微軟在Windows Data Types文件是說 ”A handle to a bitmap.”我也看不懂這個參數有什麼作用,作者是這樣描述 – optional hbitmap to search in. sending 0 will search the desktop.
下載:ImageSearchDLLwithHBmp.zip
https://dl.dropboxusercontent.com/s/43z29kgpgjyeo2m/ImageSearchDLLwithHBmp.zip?dl=1
還有另外在執行時會出現如下紅色訊息:
* Input file is UTF8 without BOM encoded, Obfuscator do not support UNICODE and will be skipped.*
* The file SHOULD BE encoded as UTF8 with BOM to continue processing by AutoIt3Wrapper. *
* ##### AutoIt3Wrapper will not show a GUI or update the script to avoid any damage to your scriptfile. ##### *
* When your file isn’t a UTF8 file without BOM then please report this to me for review.*
若用SciTE Version 3.3.0開的檔案,預設都是ANSI格式,若忘了先調整編碼,最簡單的方法之一是用Windows內建的Notepad打開後另存在UTF8後,再用SciTE編輯器打開執行,警告訊息就消失了。
include底下的檔案預設都是ANSI格式,請勿自找麻煩把它存成UTF8格式。