Что нового

[Мышь, клавиатура] Поочередное нажатие на одинаковые пиксели

deffol

Новичок
Сообщения
22
Репутация
0
Помогите пожалуйста.

как заставить скрипт нажимать ЛКМ на неопределенное кол-во пикселей ( очень много ) определенного цвета в заданном квадрате?
Неважно в каком порядке будет нажиматься, лишь бы не возвращался к предыдущим вообще.
 
Автор
D

deffol

Новичок
Сообщения
22
Репутация
0
никто не поможет? хотя-бы подскажите как начать писать массив, на наглядном примере который бы подошел к моему случаю, по формуму искал - есть много всяких тем с массивами, но везде по разному написано и я не понимаю с чего начать, часто примеры с массивом для чисел и/или букв, а на счет нажатия пикселей с поиском его цвета нет нормальных примеров.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
$any_color = 0xFFFFFF  ; кокой-то цвет

; область поиска
$x1 = 100
$x2 = 500
$y1 = 100
$y2 = 300

; кликанье по точкам

For $i = $x2 To $x1 Step -1
	For $j = $y2 To $y1 Step -1
		If PixelGetColor($i, $j) = $any_color Then MouseClick("Left", $i, $j)
	Next
Next
 
Автор
D

deffol

Новичок
Сообщения
22
Репутация
0
вот сделал, вроде работает. можете подсказать как сюда добавить оттенок цвета? ищет только точные

Код:
#include <Array.au3>

HotKeySet("{ESC}","ExitApp")
Func ExitApp()
   Exit
EndFunc

Dim $aResult[1001][2] = [[1000]], $X = 161, $Y = 211, $Right = 834, $Bottom = 532, $iColor = 0x000000
$iCount = 0

$sTitle = '' ; заголовок
$hWin = WinWait($sTitle, '', 3)
if not $hWin Then
   MsgBox(16, 'Error', 'Окно не найдено')
   Exit
EndIf
If not WinActive($hWin) Then
   WinActivate($hWin)
   WinActive($hWin)
EndIf

For $j = $Y To $Bottom
   For $i = $X To $Right
	  if PixelGetColor($i, $j, $iColor) = $iColor Then
		 $iCount += 1
		 MouseClick("Left", $i, $j, 1, 0)
		 If $iCount = $aResult[0][0] Then
			$aResult[0][0] += 1000
			ReDim $aResult[$aResult[0][0] + 1][2]
		 EndIf
		 $aResult[$iCount][0] = $i
        $aResult[$iCount][1] = $j
	  EndIf
   Next
Next
 
Автор
D

deffol

Новичок
Сообщения
22
Репутация
0
знаю что оттенок через PixelSearch нужно искать, но я не пойму как его в скрипт вставить, не получается никак, поможет кто нибудь? уже голова кипит :wacko:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Вот так возьми
Код:
PixelSearch($i, $j, $i, $j, $iColor, 10)
if Not @error Then

В этом примере 10 - допустимое отклонение от указанного цвета.

http://autoit-script.ru/autoit3_docs/functions/PixelSearch.htm


Добавлено:
Сообщение автоматически объединено:

Вообще-то ты немного накрутил там...
В твоём коде правильный вызов должен быть, наверное
Код:
PixelGetColor($i, $j, $hWin) = $iColor

Тогда координаты точки берутся в окне $hWin, а не на всём экране
и $iColor - это цвет, который ты ищешь.
А у тебя цвет равен 000000, то есть абсолютно чёрный.
И да - цвет (значение переменной $iColor) можно поменять по ходу выполнения скрипта.
 
Верх