Что нового

поиск изменения Cursor ID в заданой области экрана с помощью _WinAPI_

Danilus

Новичок
Сообщения
3
Репутация
0
Собственно subj: есть флэш игрушка. В ней для защиты от ботоводства каждый раз изменяется позиция и цвет кнопки на которую надо нажать. Но на самой кнопке происходит смена Cursor ID. Вопрос, как обозначить область экрана в которой искать данное изменение (так-как на странице помимо этого изменения есть ещё несколько) и при нахождении этого изменения произвести левый клик в тех координатах где оно было найдено?
 

scanfail

Знающий
Сообщения
244
Репутация
17
Код lirikmel:
Код:
#include <WinAPIEx.au3>
         #include <Array.au3>

Global $Cursor_id_1, $Cursor_id_2

;==============================
HotKeySet("{Enter}", "_Enter")
$i=False
Do
    ToolTip ( " Наведите курсор на цель (на моба) и нажмите клавишу Enter " )
    Sleep(20)
Until $i
Func _Enter()
    $Cursor_id_1 = _WinAPI_GetCursorInfo()
    _ArrayDisplay($Cursor_id_1, "массив для исходного значения курсора")
$i = True
    HotKeySet("{Enter}");Удалить HotKey
EndFunc
;==============================


While 1
     $Cursor_id_2 = _WinAPI_GetCursorInfo()
    If $Cursor_id_1[2] = $Cursor_id_2[2] Then ; если текущий id курсора равен исходному то 
_ArrayDisplay($Cursor_id_2, "текущий ид курсора совпал с исходным")

        ToolTip ( " Цель найдена " )
    Else
        ToolTip ( " Идет поиск цели... " )
    EndIf
    Sleep(20)
WEnd
 
Автор
D

Danilus

Новичок
Сообщения
3
Репутация
0
это понятно, но тут будет искать по всему экрану, а мне нужно искать только в заданной области (примерно как на картинке выделено красным)
 

rusreg79

Продвинутый
Сообщения
159
Репутация
57
Так?
Код:
#include <WinAPIEx.au3>
Global $Cursor_id_1, $Cursor_id_2
Global $x1 = 700, $y1 = 400, $x2 = 800, $y2 = 500, $Step = 10

;==============================
HotKeySet("{Enter}", "_Enter")
$i=False
Do
    ToolTip ( " Наведите курсор на кнопку и нажмите клавишу Enter " )
    Sleep(20)
Until $i
ToolTip ("")
Func _Enter()
    $Cursor_id_1 = _WinAPI_GetCursorInfo()
	$i = True
    HotKeySet("{Enter}");Удалить HotKey
EndFunc
;==============================

While 1
	For $y = $y1 To $y2 Step $Step
		For $x = $x1 To $x2 Step $Step

			MouseMove ($x,$y,0)
			Sleep(1)
			$Cursor_id_2 = _WinAPI_GetCursorInfo()
			If $Cursor_id_1[2] = $Cursor_id_2[2] Then ; если текущий id курсора равен исходному то
				MouseClick("Left")
				ExitLoop 2
			EndIf
		Next
	Next

	Sleep(10000);пауза
WEnd
 
Автор
D

Danilus

Новичок
Сообщения
3
Репутация
0
Всем спасибо!!! Как раз то что нужно, всё замечательно работает! :IL_AutoIt_1:
 
Верх