Что нового

[Мышь, клавиатура] Функция для поиска кнопок

Сообщения
21
Репутация
-1
Версия AutoIt: 3.

Описание:
Всем привет, недавно появилась задача сделать функцию для поиска любого объекта(в моем случае кнопки) на экране.
P.S. да, я не совсем тупой, искать приходилось именно по пикселям!

Логика следующая.
В функцию подается 4 параметра (colour_before,x,y,colour_after).
Цвет который ищем, как только его находим, берем координаты этого пикселя, смещаемся на заданные x,y и смотрим цвет уже в в новом месте, если цвет который мы взяли совпадает с colour_after, значит наша кнопка найдена , иначе уменьшаем границы pixel_search.

Вот реализация этой функции:
Код:
Func serchButton($color,$pix2x,$pix2y,$pix2color)
$y = 0
	while 1
			$pixel = PixelSearch(0,$y,1023,767,$color ,"","","Game_name") 
			If Not @error Then
					$var = PixelGetColor($pixel[0]+$pix2x, $pixel[1]+$pix2y, "Game_name")
					$var =  Hex($var, 6)
					if $var == $pix2color Then
						$return = '1|'&$pixel[0]+$pix2x&'|'&$pixel[1]+$pix2y
						 ExitLoop
					else
						$y = $pixel[1]+1
					endif
			else
				$return = '-1|0|0'
				 ExitLoop
			Endif
	WEnd
return $return
EndFunc


Проблема оказалась в том, что на разных ПК в одной и той же игре, с одинаковыми настройками графики, в одном и том же месте - немного разные оттенки.

Вопрос:

Как мне реализовать поиск кнопки в нужном мне окне по средствам пикселей. К примеру как это сделано в среде "кибор", там есть функция , которая ищем на экране переданную ей фото и можно указать разброс пикселей.
Либо любые другие варианты, что угодно. Подскажите, пожалуйста.


Для тех кто не понял и захочет предложить, тупо добавить 6-ой(shade-variation) параметр к функции PixelSearch:
image.png
 
Верх