Что нового

[Мышь, клавиатура] В коде прописано нажатие мышью один раз, а нажимает 2 раза. Как исправить?

Teacher

Новичок
Сообщения
33
Репутация
0
Код:
AdlibRegister("CheckIt", 1000)
HotKeySet("{F4}", "Start")
HotKeySet("{ESC}", "_Exit")
Global $Checker = False

While 1
   Sleep(350)
WEnd

Func Start()
While 1 ; <= начало цикла
   
$a1 = PixelSearch(55, 157, 233, 201, 0xFF0000)
If IsArray($a1) = True Then
MouseClick("left", 822, 630, 1, 0)
Sleep(2000)
$new1 = PixelSearch(1055, 382, 1252, 418, 0x0084FF)
If IsArray($new1) = True Then
MouseMove($new1[0], $new1[1], 1)
MouseClick("left")
Sleep(300)
WaitColor(0x00FF00)
If Not $Checker Then MouseClick("left", 958, 620, 1, 0)
EndIf
EndIf

$a2 = PixelSearch(55, 157, 233, 201,0x00FF00)
If IsArray($a2) = True Then
MouseClick("left", 959, 622, 1, 0)
Sleep(2000)
EndIf
$new1 = PixelSearch(1055, 382, 1252, 418, 0x0084FF)
If IsArray($new1) = True Then
MouseMove($new1[0], $new1[1], 1)
MouseClick("left")
Sleep(300)
WaitColor(0xFF0000)
If Not $Checker Then MouseClick("left", 822, 630, 1, 0)
EndIf
If $Checker Then $Checker = False
   
WEnd ; <= конец цикла
EndFunc
Func WaitColor($Color)
  Do
   PixelSearch(55, 157, 233, 201, $Color)
  Until Not @error  Or $Checker
EndFunc

Func CheckIt()
  $close = PixelSearch(1220, 327, 1248, 351, 0xCCCCCC)
  If IsArray($close) = True Then
    Sleep(400)
    MouseClick("left", 1195, 479, 1, 0)
    Sleep(400)
	$Checker = True
  EndIf

  $eror = PixelSearch(797, 500, 851, 519, 0x404040)
  If IsArray($eror) = True Then
    MouseClick("left", 1150, 479, 1, 0)
	$Checker = True
  EndIf
EndFunc
	  Func _Exit()
		 Exit
	  EndFunc


Это весь код программы. Грубо говоря есть элемент который меняет свой цвет: зеленый - красный - зеленый - красный...и.т.д...
При появлении зеленого цвета должен происходить клик мышью на кнопку, сначала на одну, (сонн 2 секунды) потом на другую и далее программа ждет появления другого цвета (тобишь если был красный - совершили нажатие по одной кнопке, если зеленый - то совершили нажатие по другой кнопке). и.т.д...
Я заметил какой - то странный баг, или что это, я не пойму. Бывает так, что после запуска программы, она видит пиксель например красный и совершает первый MouseClick 2 раза (так бывает не всегда!). Бывает что после запуска, она исполняет все нормально с одним щелчком.
(Func CheckIt() - это независимая функция которая срабатывает отдельно при появлении цвета в другой координате.) Не понимаю. В коде вроде бы все верно, но бывает первый раз щелкает 2 раза, а не один. Кто знает, что это может быть? :-\
 
Верх