Что нового

[Мышь, клавиатура] клик по цвету

mini

нинзя-черепангел
Сообщения
44
Репутация
1
Может ли AUTOIT нажать на пиксель с заданным цветом? И возможно ли это сделать для определённой области экрана?
Желательно пример, для наглядности.
Заранее спасибо
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
См. в справке...
Код:
PixelSearch
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Код:
$left='';Левая координата области для поиска
$top='';Верхняя
$right='';Праввая
$bottom='';нижняя
$color='';Цвет пиксела
$pos = PixelSearch ( $left, $top, $right, $bottom, $color) 
MouseClick("left", $pos[0], $pos[1])
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
mini [?]
Желательно пример, для наглядности.
Код:
$aRed_Coords = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0xFF0000)
If Not @error Then MouseClick("Main", $aRed_Coords[0], $aRed_Coords[1])
 
Автор
M

mini

нинзя-черепангел
Сообщения
44
Репутация
1
r35p3ct сказал(а):
Код:
$left=''
$top=''
$right=''
$bottom=''
$color=''
$pos = PixelSearch ( $left, $top, $right, $bottom, $color) 
MouseClick("left", $pos[0], $pos[1])
В этой строке:
Код:
$pos = PixelSearch ( $left, $top, $right, $bottom, $color)

распишите что в скобках и с помощью чего можно эти величины узнать?
Подозреваю, что колор это цвет искомого пикселя, но остальные величины для меня загадка.
и в строке
Код:
MouseClick("left", $pos[0], $pos[1])

нулевой pos и pos первый - что значат...
P.S. Огромное спасибо за оперативность ответов. ;)


Добавленно: А можно ли с помощью AutoIT
1)работать с неактивными окнами
2)с помощью какой команды можно останавливать скрипт при помощи нажатия определённой клавиши клавиатуры или набора клавиш. Если непонятно, то я имею ввиду что у меня был инцидент что мой скрипт выполнялся до посинения(даже когда уже он не нужен был - я повторений поставил слишком большое кол-во)ю Пришлось перезагружать компьютер. Думаю, в данной программе обязательно есть функция для предотвращения данных инцидентов :-[
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
PixelSearch - при нахождении пикселя с нужным цветом выдает его координаты (x,y), которые записывает в массив $pos. Отсюда получается что $pos[0] это координата x и $pos[1] координата y (в данном примере)

Строение для записи PixelSearch смотрите в справке, ибо там понятно написано. :smile:

1) Можно. Мало того, можно даже со скрытыми окнами работать :smile:
2) У Creator'a был где то скрипт для паузы скрипта, и помоему он где то был и здесь. Поищите поиском.

left
левая координата для области поиска.
top верхняя координата для области поиска.
right правая координата для области поиска.
bottom нижняя координата для области поиска.
colour цвет пикселя который нужно найти (в десятичном или hex формате).
 

hikki

Продвинутый
Сообщения
233
Репутация
99
паза, вот как то так
Код:
Global $Paused
HotKeySet("{PAUSE}", "TogglePause") ;Назначение горячей клавиши. При нажатии Pause Break скрипт встанет на паузу


Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip("Script is Paused")
WEnd
ToolTip("")
EndFunc

давно уже подсмотрел гдето и теперь это у меня во всех скриптах обязательно
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
mini [?]
распишите что в скобках и с помощью чего можно эти величины узнать?
См. пример в моём сообщений.

Все остальные вопросы, не касающиеся данной темы, направлять либо в новые темы, либо в существующие аналоги :smile:.
 
Автор
M

mini

нинзя-черепангел
Сообщения
44
Репутация
1
Всем спасибо за ответы. :beer:
 

oneDmitry

Новичок
Сообщения
55
Репутация
3
Medic84 сказал(а):
PixelSearch - при нахождении пикселя с нужным цветом выдает его координаты (x,y), которые записывает в массив $pos. Отсюда получается что $pos[0] это координата x и $pos[1] координата y (в данном примере)

Строение для записи PixelSearch смотрите в справке, ибо там понятно написано. :smile:

1) Можно. Мало того, можно даже со скрытыми окнами работать :smile:
2) У Creator'a был где то скрипт для паузы скрипта, и помоему он где то был и здесь. Поищите поиском.

left
левая координата для области поиска.
top верхняя координата для области поиска.
right правая координата для области поиска.
bottom нижняя координата для области поиска.
colour цвет пикселя который нужно найти (в десятичном или hex формате).

работа со скрытым окном - здорова :laugh:, а как на счёт скрыть окно, которе нельзя свернуть ?
 
Автор
M

mini

нинзя-черепангел
Сообщения
44
Репутация
1
Я правильно написал?
Код:
; тут мы нажимаем правым кликом на пикселёк 
; с определённым цветом в указанной области
$left='611, 98';Левая координата области для поиска
$top='701, 8';Верхняя
$right='789, 98 ';Праввая
$bottom='701, 186 ';нижняя
$color='12766310 ';Цвет пиксела
$pos = PixelSearch ( $left, $top, $right, $bottom, $color) 
MouseClick("left", $pos[0], $pos[1])
или в лефт, топ и т.д. не нужно обе координаты писать?
и второе, чтото нужно писать в теле скрипта, чтобы скрипт работал только с относительными координатами, а не с абсолютными?
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
mini [?]
или в лефт, топ и т.д. не нужно обе координаты писать?
Нет, пишется только координата, для лева и права к примеру X.

и второе, чтото нужно писать в теле скрипта, чтобы скрипт работал только с относительными координатами, а не с абсолютными?
AutoItSetOption ( "option" [, param]
MouseCoordMode Sets the way coords are used in the mouse functions, either absolute coords or coords relative to the current active window:
0 = relative coords to the active window
1 = absolute screen coordinates (default)
2 = relative coords to the client area of the active window
Наверно так...
Код:
; тут мы нажимаем правым кликом на пикселёк 
; с определённым цветом в указанной области
$left='611';Левая координата области для поиска
$top='8';Верхняя
$right='789';Праввая
$bottom='186';нижняя
$color='12766310';Цвет пиксела
$pos = PixelSearch ( $left, $top, $right, $bottom, $color) 
MouseClick("left", $pos[0], $pos[1])
 
Автор
M

mini

нинзя-черепангел
Сообщения
44
Репутация
1
r35p3ct, я Вас правильно понял? нужно написать в начале скрипта строчку:
Код:
AutoItSetOption ( "CaretCoordMode" [, 2] )
или
Код:
AutoItSetOption (CaretCoordMode, 2)
для того, чтобы скрипт пользовался только относительными координатами?


И после цифр пробелов быть не должно?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
mini [?]
нужно написать в начале скрипта строчку
А что в справке написано? ;)
Судя по “сложности” вопроса ты её не открывал.

после цифр пробелов быть не должно?
Не должно (не желательно). Если эти значения берутся из неизвестного источника (из пользовательского файла к примеру), то можно “раздеть” пробелы у строк используя StringStripWS.
 
Автор
M

mini

нинзя-черепангел
Сообщения
44
Репутация
1
CreatoR сказал(а):
А что в справке написано? ;)
Судя по “сложности” вопроса ты её не открывал.
я справки взял написанное и погуглил. меня кинуло на эту страницу
http://www.autoitscript.com/autoit3/docs/functions/AutoItSetOption.htm
там и нашел про карет коорд мод
Тоесть Вы хотите сказать, что нужно обязательно писать маус коорд мод?

судя по вашим примерам, то
Код:
AutoItSetOption (MouseCoordMode, 2)
будет правильным
Это нужно писать везде, где ищу определённый пиксель или можно в начале большого скрипта поставить один раз и до конца его работы он будет искать только в относительных координатах?
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
mini сказал(а):
Это нужно писать везде, где ищу определённый пиксель или можно в начале большого скрипта поставить один раз и до конца его работы он будет искать только в относительных координатах?
Opt("CaretCoordMode", 1) абсолютные координаты экрана.
В начало скрипта и все.
 

mrdig

Новичок
Сообщения
7
Репутация
1
попробывал это :
Код:
; тут мы нажимаем правым кликом на пикселёк 
; с определённым цветом в указанной области
$left='611';Левая координата области для поиска
$top='8';Верхняя
$right='789';Праввая
$bottom='186';нижняя
$color='12766310';Цвет пиксела
$pos = PixelSearch ( $left, $top, $right, $bottom, $color) 
MouseClick("left", $pos[0], $pos[1])


после 5-10 нахождений пикселей начало выбивать ошибку Error: Subscript used with non-Array variable

подскажите кто знает?
 
Верх