Imagesearch jak sama nazwa wskazuje jest poleceniem szukającym odpowiedniego obrazka na ekranie.
Zajmiemy się dziś bardzo prostym UDF’em który prawdopodobnie posłuży nam do pisania botów w grach flash bo właściwie tylko do tego się nadaje…
Aby nie przeciągać – pobieramy UDF #1,#2,#3,#4 (mirrory)
W paczce umieściłem 2 wersje Imagesearch (32/64 Bit) oraz au3 z przykładowym skryptem.
ImageSearch.au3 to tylko dwie funkcje:
- _ImageSearch szuka na całym ekranie
- _ImageSearchArea szuka po wybranym obszarze ekranu.
Aby skorzystać z dobrodziejstw tej biblioteki potrzebujemy obrazu w formacie *.png
Składnia polecenia Imagesearch
_ImageSearch([obraz], [pozycja], $x, $y, [tolerancja])
[obraz] – wiadomo, ścieżka do obrazu który zamierzamy szukać.
[Tolerancja] – wartość od 0 do 255, dzięki tej pozycji ustawiamy tolerancję imagesearch na różnicę kolorów pomiędzy obrazkiem, a ekranem. Przydatne w przypadku szukania gif’ów.
[Pozycja] – zwracana pozycja (o ile obrazek został znaleziony) 0 – lewy górny bok obrazka, 1 – środek obrazu.
Składnia _ImageSearchArea jest bardzo zbliżona:
_ImageSearchArea([obraz], [pozycja], $x1, $y1, $x2, $y2, $x, $y, [tolerancja])
Różni się od składni opisanej powyżej jedynie oznaczeniem początku ($x1, $y1) oraz końca ($x2, $y2) wyszukiwanego obszaru. W trakcie pisania skryptów,w których prędkość wyszukiwania jest istotna zalecam korzystanie z _ImageSearchArea aby zawężać obszar wyszukiwania, kiedy tylko się da.
Uwaga !
1) Biblioteka nie porównuje skalowanych obrazów tj. aby skrypt działał na mniejszej/większej rozdzielczości musicie przygotować odpowiednie wielkości obrazów. Mój sposób na obejście tego problemu jest następujący:
Przygotujcie sobie odpowiednie wielkości *png i wrzucicie je do folderów nazwanych jak rozdzielczości ekranu, do których są dostosowane np.
/1024x764/ /720x1280/ /1080x1920/
Wykorzystamy teraz dwa makra (o których będzie następny poradnik) @DesktopHeight zwracające wysokość okna oraz @DesktopWidth zwracający jego szerokość.
_ImageSearch(@DesktopHeight&'x'&@DesktopWidth'\obrazek.png', 0, $x, $y, 0))
W ten sposób imagesearch będzie zawsze szukał w odpowiedniej dla ekranu rozdzielczości.
2) Wersja 64 bitowa nie będzie współgrała z 32 bitowym kompilatorem i vice versa
Jak wspomniałem na samym początku, imagesearch jest dość ograniczonym UDF-em i nie zalecam z niego korzystać dopóki naprawdę nie mamy innego wyjścia.