Что нового

Двойной клик по цвету

adkomissarov

Новичок
Сообщения
15
Репутация
0
Доброго дня. Нашел на форуме как кликнуть по цвету:
Код:
$aRed_Coords = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0x3047C4)
If Not @error Then MouseClick("Main", $aRed_Coords[0], $aRed_Coords[1])
Я так понимаю это одиночный клик в случае обнаружения пикселя с нужным цветом. А как реализовать двойной клик в случае обнаружения нужного цвета? Совсем не зная автоита, я попробовал так:
Код:
$aRed_Coords = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0x3047C4)
If Not @error Then MouseClick("Main", $aRed_Coords[0], $aRed_Coords[1])
MouseClick("Main", $aRed_Coords[0], $aRed_Coords[1])
Но получается что двойной клик срабатывает, но и срабатывает одинарный даже в случае отсутствия пикселя с заданным цветом. Разобраться конечно можно, но просто дело огромной срочности. Ребят, выручайте, заранее огромное спасибо.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
У функции MouseClick() четвёртый параметр отвечает за количество кликов
Код:
Then MouseClick("Main", $aRed_Coords[0], $aRed_Coords[1], 2)
 
Автор
A

adkomissarov

Новичок
Сообщения
15
Репутация
0
InnI сказал(а):
У функции MouseClick() четвёртый параметр отвечает за количество кликов
Большое спасибо. А нельзя прикрутить различные цвета, т.е. не один, а к примеру 5-10 разных цветов? Чтобы срабатывало когда появляется любой из заданных. И как поведет себя скрипт, если в заданной области появится сразу несколько цветов?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
adkomissarov
правильно понимаю?
Нет. Будет срабатывать для каждого найденного цвета
Код:
$aRed_Coords = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0xFF0000) ; если найден красный
If Not @error Then MouseClick("Main", $aRed_Coords[0], $aRed_Coords[1], 2)

$aRed_Coords = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0x00FF00) ; если найден синий
If Not @error Then MouseClick("Main", $aRed_Coords[0], $aRed_Coords[1], 2)

$aRed_Coords = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0x0000FF) ; если найден зелёный
If Not @error Then MouseClick("Main", $aRed_Coords[0], $aRed_Coords[1], 2)
; и т.д.
 
Автор
A

adkomissarov

Новичок
Сообщения
15
Репутация
0
InnI сказал(а):
Нет. Будет срабатывать для каждого найденного цвета
А как можно сделать чтобы для одного любого который первым попался в поле зрения? Это оказывается важно.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
adkomissarov [?]
для одного любого который первым попался
Код:
Global $aColors[] = [0xFF0000,0x00FF00,0x0000FF] ; массив цветов

For $i = 0 To UBound($aColors) - 1
  $aCoords = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, $aColors[$i])
  If Not @error Then
    MouseClick("Main", $aCoords[0], $aCoords[1], 2)
    ExitLoop
  EndIf
Next
 
Верх