Что нового

[Мышь, клавиатура] Многочисленное нажатие на определенный цвет в заданном квадр

deffol

Новичок
Сообщения
22
Репутация
0
Здраствуйте, нужна помочь в написании скрипта, так как сам почти ничего в этом не понимаю.

Нужно нажатие ЛКМ в браузере опера ( если это важно ) в определенные места. Эти места определяются определенным цветом из другого окна паралельно открытому браузеру. То есть кликать в браузере именно в те места, где цвет в окне на заднем плане, в определенном квадрате.

Слышал есть программа которая может сделать окно ( в данном случае оперу ) прозрачным, но не знаю будет ли реагировать на это аутоит в поиске цветов окна на заднем плане, что было бы гораздо проще.
Надеюсь на вашу помощь, и, надеюсь что понятно объяснил.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Мышь, клавиатура] Нажатие ЛКМ в браузер в те места, где цвет в другом окне

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Мышь, клавиатура] Нажатие ЛКМ в браузер в те места, где цвет в другом окне" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.
 

agikon

Знающий
Сообщения
789
Репутация
17
Re: [Мышь, клавиатура] Нажатие ЛКМ в браузер в те места, где цвет в другом окне

если окно на заднем плане то как узнать что там творится?
я хотел узнать как сделать чтобы на переднем плане за пределами рабочего стола и то все методы оказались нерабочими, а вы хотите чтобы и вообще его не было видно.
откуда вообще такие предпосылки берутся? неужели кто-то делал такое и получалось? вот куда не гляну и все хотят такое сделать но ни у кого не выходит.
это как пришельцы, все про них говорят но никто не видел.
 
Автор
D

deffol

Новичок
Сообщения
22
Репутация
0
Re: [Мышь, клавиатура] Нажатие ЛКМ в браузер в те места, где цвет в другом окне

agikon [?]
если окно на заднем плане то как узнать что там творится?
я пытался найти ответ на форуме вообще-то, а вы у меня что-то спрашиваете, в первых строках темы написано, что я не понимаю в этом ничего.

может можно скриптом запомнить места где находится цвет попиксельно и в браузере нажать в эти же места на лкм, не обязательно это делать быстро, цвет в первом окне все равно статический.
 
Автор
D

deffol

Новичок
Сообщения
22
Репутация
0
Re: [Мышь, клавиатура] Как запомнить места пикселей и нажать туда в другом окне?

проверил, что можно сделать окно браузера прозрачным и аутоит реагирует на цвета которые находятся за ним. подскажите как написать скрипт котрорый будет кликать постоянно лкм на определенный цвет в заданном квадрате, буду очень признателен.


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

Код:
Opt("CaretCoordMode", 1)
$left='23'
$top='123'
$right='1001'
$bottom='612'
$color='0xCCFF00'
$pos = PixelSearch ( $left, $top, $right, $bottom, $color)
If Not @error Then
MouseClick("left", $pos[0], $pos[1])
EndIf


вот это работает, но всего лишь один раз, как сделать постоянное нажатие на кнопку если есть пиксел определенного цвета?
 
Автор
D

deffol

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

но у меня проблема возникла, скрипт нажимает только на один пиксель, можно ли сделать так чтоб при нажатии на пиксель он больше к нему не возвращался? ибо есть много одинаковых пикселей на которые нужно нажать, а он нажимает постоянно только на первый найденный.

вот скрипт, если можно как нибудь доработать:
Код:
Opt("CaretCoordMode", 1)
HotKeySet("{F10}","ExitApp")
Func ExitApp() ;
   Exit
EndFunc
$left='23'
$top='123'
$right='1001'
$bottom='612'
$color='0x000000'
$Dip_Col = 50
while 1
$pos = PixelSearch ( $left, $top, $right, $bottom, $color, $Dip_Col) 
If IsArray($pos) = True Then
    MouseClick("left", $pos[0], $pos[1])
 EndIf
 WEnd
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
HotKeySet("{F10}","ExitApp")

Global $Left = 140, $Top = 100, $Right = 100, $Bottom = 612, $Color = 0xFFFFFF, $Dip_Col = 50

While 1
   $Pos = PixelSearch( $Left, $Top, $Right, $Bottom, $Color, $Dip_Col) 
   $Left = Random(0, @DesktopWidth)
   $Top = Random(0, @DesktopHeight)
   $Right = Random(0, @DesktopWidth)
   $Bottom = Random(0, @DesktopHeight)
   If IsArray($Pos) Then
      ;MouseClick("left", $Pos[0], $Pos[1])
      MouseMove($Pos[0], $Pos[1])
   EndIf
   Sleep(500)
WEnd

Func ExitApp()
   Exit
EndFunc



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

А если Вы имеете ввиду не двигая координаты щёлкать по всем соответствующим пикселям в этом квадрате, то нужно создавать массив и записывате туда все нажатые координаты, после того как PixselSearch заново начнёт поиск пикселя, нужно сверять координаты которые вернула функция с координатами которые записаны в массиве, если таких нет или хоть на пиксель отличаются, значит выполняем клик по этим координатам.


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

Хотя можно и без массива обойтись

Код:
HotKeySet("{F10}","ExitApp")

While 1
   PixelClick(100, 100, 600, 600, 0xFFFFFF, 50)
   Sleep(200)
WEnd

Func PixelClick($X, $Y, $Right, $Bottom, $Color, $Dip_Col)
   Local $Left = Random($X, $Right)
   Local $Top = Random($Y, $Bottom)
   $Pos = PixelSearch($Left, $Top, $Right, $Bottom, $Color, $Dip_Col) 
   If IsArray($Pos) Then
	  If ($Pos[0] > $X) And ($Pos[1] > $Y) And ($Pos[0] < $Right) And ($Pos[1] < $Bottom) Then
         ;MouseClick("left", $Pos[0], $Pos[1])
         MouseMove($Pos[0], $Pos[1])
	  EndIf	 
   EndIf	
EndFunc   

Func ExitApp()
   Exit
EndFunc
 
Автор
D

deffol

Новичок
Сообщения
22
Репутация
0
проверил первый скрипт - работает, спасибо, но иногда вылазиет за указанный квадрат поиска, но редко и это ничего в принципе.


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

еще вопросик - можно как нибудь ускорить процесс нажатия? это не очень-то и важно, мне и этого достаточно будет, но все же интересно.


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

а вот во 2м скрипте вашем, после нажатие на несколько пикселей скрипт сам останавливается почему-то, щас пытаюсь что-то сделать, но мне и первый понравился))
 
Автор
D

deffol

Новичок
Сообщения
22
Репутация
0
спасибо большое, раз в 5 быстрей стало работать ))))
а можно все таки сделать так, чтоб за искомый квадрат не вылезало нажатие? иногда может натворить чудес скрипт))
 
Автор
D

deffol

Новичок
Сообщения
22
Репутация
0


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

Код:
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{F11}", "Terminate")

Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
    sleep(50)
        ToolTip('Script is "Paused"',0,0)
    WEnd
    ToolTip("")
 EndFunc
  Func Terminate()
    Exit 0
 EndFunc
 
WinActivate("[TITLE:]") ;название допишу
While WinActive("[TITLE:]") ;тоже самое
WEnd

While 1
   PixelClick(100, 140, 888, 616, 0x0B0B0B)
WEnd

Func PixelClick($X, $Y, $Right, $Bottom, $Color)
   Local $Left = Random($X, $Right)
   Local $Top = Random($Y, $Bottom)
   $Pos = PixelSearch($Left, $Top, $Right, $Bottom, $Color) 
   If IsArray($Pos) Then
      If ($Pos[0] > $X) And ($Pos[1] > $Y) And ($Pos[0] < $Right) And ($Pos[1] < $Bottom) Then
         MouseClick("left", $Pos[0], $Pos[1], 1, 0)
      EndIf  
   EndIf    
EndFunc

можете проверить все ли правильно? вроде нормально работает :smile:
 
Верх