Автор Тема: [Мышь, клавиатура] В коде прописано нажатие мышью один раз, а нажимает 2 раза. Как исправить?  (Прочитано 666 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Teacher [?]

  • Новичок
  • *
  • Сообщений: 33
  • Репутация: 0
    • Награды
Код: AutoIt [Выделить]
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 раза, а не один. Кто знает, что это может быть?  :-\
« Последнее редактирование: Февраль 23, 2015, 20:55:50 от Teacher »

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
2237 Просмотров
Последний ответ Ноябрь 26, 2012, 23:06:03
от madmasles
2 Ответов
1569 Просмотров
Последний ответ Декабрь 14, 2012, 01:48:37
от AZJIO
4 Ответов
1621 Просмотров
Последний ответ Ноябрь 13, 2013, 01:13:25
от _ToBe_
4 Ответов
1602 Просмотров
Последний ответ Февраль 20, 2014, 16:35:21
от Akaboshi
0 Ответов
733 Просмотров
Последний ответ Май 19, 2014, 09:16:13
от madmasles
5 Ответов
1801 Просмотров
Последний ответ Июнь 19, 2014, 21:05:48
от mr.Gbabak
2 Ответов
836 Просмотров
Последний ответ Июль 30, 2014, 20:46:37
от heyjoe
5 Ответов
1166 Просмотров
Последний ответ Июнь 06, 2015, 19:08:46
от Yashied
0 Ответов
371 Просмотров
Последний ответ Январь 26, 2016, 21:18:45
от avtoIT
3 Ответов
229 Просмотров
Последний ответ Январь 11, 2017, 15:23:59
от ra4o