Что нового

Как найти и нажать на картинку

joker2d

Новичок
Сообщения
182
Репутация
0
Помогите с самым простым примером Autoit скрипта, он должен искать на экране заранее сохраненную картинку и при ее появлении нажимать на нее.
Искать должен не по размеру окна или заголовку, а именно по изображению.

Моя задача в том чтобы ждать в приложении определенную кнопку и при ее появлении жать на нее, поэтому не вижу других способов детектить нужную кнопку кроме как по изображению.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
ссылку или код страницы в студию. а вообще старайся создавать темы в соответствующих разделах. на первый раз я перенес
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
joker2d, вы собираетесь искать картинку в браузере?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
возможно я неправильно понял автора, если тема не касается браузера, можно перенести обратно.
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
Kaster
Тема не касается браузера
ждать картинку я хочу в окне покерного клиента и нажимать на нее(если совсем конкретно я жду определенную кнопку)
Я почему то подумал что где именно будет картинка не так важно, моя ошибка :smile:
 

LightDemon

Новичок
Сообщения
24
Репутация
1
Самый простой способ через PixelGetColor, как мне кажется! С помощью AutoIt Window Info находите какой-нибудь пиксель на этой кнопке отличный по цвету в момент когда кнопка есть и когда её нет! Берете её координаты и цвет когда она есть... и ваш дальнейший код будет выглядеть примерно так:
Код:
$color=;цвет точки на кнопке
$x=;координата X точки на кнопке
$y=;координата Y точки на кнопке

While 1
$a=PixelGetColor($x,$y)
If $a==$color then 
	MouseClick ("left",$x, $y, 1)
EndIf
WEnd
 

running-frag

why me?
Сообщения
441
Репутация
60
LightDemon [?]
Самый простой способ через PixelGetColor, как мне кажется!
больше восклицательный знаков, это показывает уровень знаний

по теме, ImageSearch как вариант, топик с примерами
одно но, не рекомендую использывать для чего то бОльшего чем поиска одной кнопки (для бота не прокатит, много ресурсов сьест), проще как сказано выше через PixelGetColor () или PixelSearch (), но это требует более углублённых знаний
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
running-frag
LightDemon

Все это нужно именно для бота, чтобы в бесконечно цикле искал на нужном окне нужную кнопку и жал на нее
нужных окон может быть несколько
ImageSearch значит отпадает ?

И вопросы по PixelGetColor
1)можно как то узнать координаты пиксела в конкретном окне, а не на всем экране, в конкретном окне координаты не меняются, а по экрану окно двигается произвольно
2)Можно ли захватить больше чем один пиксел чтобы скрипт меньше ошибался
3)Где в AutoIt Window Info можно найти координаты и цвет пиксела ?
 

running-frag

why me?
Сообщения
441
Репутация
60
не отпадает, в зависимости как ты будешь его использывать, какое железо и т.д.

1. можно для этого нужно сменить настройки Opt () и зарание активировать окно (WinActivate ())
2. можно, если правильно поставить логику то хоть полностью картинку через PixelGetColor () сравнивай
3. автоит инфо мягко говоря для этой цели не подойдёт (лично у меня свой лично написанный, как мне надо), ну а вообще там есть Finder Tool тянешь его туда где нужный цвет после в вкладке Mouse смотришь цвет
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
running-frag
А какой нить самый простой пример использования PixelGetColor в окне приложения можно ?
к примеру чтобы он искал и нажимал на несколько пикселей в окне стандартного приложения Калькулятор (в Windows7 или WindowsXP) и передвижение окна не мешало бы ему снова и снова находить этот пиксели и нажимать на них.

А то как то сложно разобраться, как это все сложить в один скрипт и запустить, столько функций и параметров. :shok:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
joker2d [?]
А какой нить самый простой пример
Код:
Opt('PixelCoordMode', 2)
Opt('MouseCoordMode', 2)

OnAutoItExitRegister('_Exit')

; Две секунды чтобы вы успевали перемещать окно
AdlibRegister('_ClickCalc', 2000)

_ClickCalc()

Func _ClickCalc()
	
	If ProcessExists('calc.exe') Then
		$hWin = WinGetHandle('[CLASS:SciCalc]')
		WinActivate($hWin)
		; Ищем синий цвет 0x0000FF, в координатах left - 55, top - 74, right - 88, bottom - 100 ( Цифра 7 )
		$aCoord = PixelSearch(55, 74, 88, 100, 0x0000FF, 0, 1, $hWin)
		If Not @error Then
			MouseMove($aCoord[0],$aCoord[1])
			MouseClick("left")
		EndIf
	Else
		RunWait('calc.exe')
	EndIf
EndFunc

Func _Exit()
	AdlibUnRegister('_ClickCalc')
	Exit
EndFunc
 
Верх