Что нового

как совершить клик при появлении объекта заданной формы.

stormovik

Новичок
Сообщения
58
Репутация
1
Требуется совершить клик при появлении объекта заданной формы.

Код:
$q=0 ; задали прооизвольное значение для переменной

if PixelGetColor(382,362)=PixelGetColor(382,368)=PixelGetColor(385,362)=PixelGetColor(385,368) then $q=1
; проверили одинаковость цвета в четырех точках (неважно, какой именно, главное, чтобы пиксели соотносились друг по отношению другу "правильно") и обозначили это изменением переменной

if $q=1 then MouseClick("right",114,366) 
if $q=1 then MouseClick("left",155,388)
; если проверка была успешной, то клацаем мышкой

if $q<>1 then MsgBox(0,"","все плохо") ; если нет, то делаем другие действия

Почему-то мое решение работает строго наоборот: когда я подсовываю ему правильный объект, он пишет "все плохо" ), а когда его нет - нормально кликает. Разумеется, инвертированная работа меня также устраивает, однако хотелось бы понять свою ошибку.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
stormovik,
Можно так попробовать:
Код:
Dim $aCoord[5][2] = [[4],[382, 362],[382, 368],[385, 362],[385, 368]]

$iPause = 2000
HotKeySet('{Esc}', '_Exit')

$fYes = True
$iStart = TimerInit()
While 1
	If TimerDiff($iStart) > $iPause Then
		$iColor = PixelGetColor($aCoord[1][0], $aCoord[1][1])
		$fYes = True
		For $i = 2 To $aCoord[0][0]
			If PixelGetColor($aCoord[$i][0], $aCoord[$i][1]) <> $iColor Then
				$fYes = False
				ExitLoop
			EndIf
		Next
		If $fYes Then
			ToolTip('Все хорошо', 0, 0)
		Else
			ToolTip('Все плохо', 0, 0)
		EndIf
		$iStart = TimerInit()
	EndIf
	Sleep(50)
WEnd

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Верх