1

Тема: AHK: Клик по всем кнопкам (ImageSearch)

https://i.imgur.com/Wn06n3P.jpg

Мне нужно сделать так, чтобы скрипт кликал по всем кнопкам с задержкой, но я не знаю, как осуществить это.

!1::
loop,
{
	ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, C:\Users\Артур\Desktop\Images\Untitled.bmp
	if (errorlevel == 0) ; errorlevel is generated after each imageSearc. 0 means the picture was found. 1 means not found. and 2 means its something wrong either with search area ur given or picture dosnt exist.
	{
		Mousemove, FoundX, FoundY, 50
		Mouseclick, left, FoundX, FoundY
	}
}
return

!2::pause

P.S. Или можно сделать так: когда жму !1, то 1-ая кнопка должна быть нажата, но если она уже нажата до скрипта, то переход к другой и клик, и т.п.)

2

Re: AHK: Клик по всем кнопкам (ImageSearch)

Задержка осуществляется через Sleep.

Чтобы прокликать все кнопки по очереди, вначале их координаты нужно собрать в массив, чтобы по хоткею извлекать их по очереди.
Пример от serzh82saratov.

3 (изменено: justus3r, 2018-07-30 19:12:06)

Re: AHK: Клик по всем кнопкам (ImageSearch)

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

4

Re: AHK: Клик по всем кнопкам (ImageSearch)

ImageSearch - всегда находит самое первое совпадение при поиске сверху-вниз и слева-направо.
Каждый раз, Alt+1 будет тыкать с первый найденный элемент.


!1::
	ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, C:\Users\Артур\Desktop\Images\Untitled.bmp
	if (errorlevel == 0) ; errorlevel is generated after each imageSearc. 0 means the picture was found. 1 means not found. and 2 means its something wrong either with search area ur given or picture dosnt exist.
	{
		Mousemove, FoundX, FoundY, 50
		Mouseclick, left, FoundX, FoundY
	}
return

Чтобы прокликать таким образом все, учитывая неизвестные элементы списка, то, верно - придётся получать координаты всех элементов, производить по ним клик, прокручивать список до новых и повторять эту же процедуру, пока не наступит событие, означающее остановку, которое так же нужно описать кодом, или контролировать это в ручную, запустив выполнение не в цикле, а в таймере.

5 (изменено: justus3r, 2018-07-30 19:12:16)

Re: AHK: Клик по всем кнопкам (ImageSearch)

Аа, вот как. Печально. Но всё равно спасибо. А если я запишу координаты всех кнопок, то он будет их кликать? А вдруг, если я запущу скрипт с середины, то есть пролистаю вниз, то как он узнает, где находятся эти кнопки?

6

Re: AHK: Клик по всем кнопкам (ImageSearch)

Если Вы отвечаете на сообщение предыдущего оратора, не обязательно это указывать в своём сообщении, особенно, если в беседе всего два участника и диалог нигде не разрывается.

На мой взгляд, если и стремиться к автоматизации, то тогда уж к максимальной её эффективности, а у Вас получается, что кликать кнопки будет скрипт, а крутить список будете ручками.
Делайте и прокрутку списка скриптом. Посчитайте, сколько нужно сообщить окну "WheelDown", чтобы новые элементы прокрутились до начала списка скрыв уже прокликанные, нужны ли между ними слипы, найдите в окончании списка фрагмент, который будет обозначать "признак отмены" и ищите его перед каждой итерацией. Если признака нет, то после текущего прохода кликами по элементам должен быть следующий, иначе, найденные элементы = последние в списке и после кликов по ним, следует остановить работу скрипта.

7 (изменено: svoboden, 2018-07-30 16:42:07)

Re: AHK: Клик по всем кнопкам (ImageSearch)

Так в программе Nox App Player есть свой встроенный язык, и запись макросов там тоже имеется. Может, через них проще.

8 (изменено: justus3r, 2018-07-30 19:11:10)

Re: AHK: Клик по всем кнопкам (ImageSearch)

svoboden, в Nox Player'е нет функции по поиску изображения, а если записывать обычным макросом, то он будет просто тыкать по пустому месту, и будет открываться другая страница.

KusochekDobra, Ты имеешь в виду, чтобы я ввёл координаты на все кнопки, которые пока что присутствуют на экране, а затем произвести скролл?

9

Re: AHK: Клик по всем кнопкам (ImageSearch)

justus3r, избыточное цитирование является нарушением правил форума! Исправьте Ваши сообщения!

10

Re: AHK: Клик по всем кнопкам (ImageSearch)

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

На этом этапе беседы, я больше склоняюсь к совету почитать справочные материалы и потренироваться на примерах. Хотя-бы на тех, что выше. Понять, как оно всё работает и поискать на страницах форума другие примеры с применением искомых технологий. Потому как невооружённым глазом видно, как мы обсуждаем одно и то же на разных языках, от чего, консенсус = недостижим.

11

Re: AHK: Клик по всем кнопкам (ImageSearch)

Хорошо, я это учту.

12

Re: AHK: Клик по всем кнопкам (ImageSearch)


F1::
MouseClick, , 490, 30, 1, 1
Sleep, 1000
MouseClick, , 490, 130, 1. 1
Sleep, 1000
MouseClick, , 490, 230, 1, 1
Sleep, 1000
MouseClick, , 490, 330, 1, 1
return

Укажите свои координаты.)
Узнать координаты можно вот так:


F1::
MouseGetPos, xpos, ypos 
Msgbox, Текущие координаты курсора: X%xpos% Y%ypos%. 
return

Допишите чтобы он проматывал верх или вниз куда вам нужно у вас же статичные кнопки, значит координаты будут те-же при перемотке к следующим кнопкам, я так думаю.

13

Re: AHK: Клик по всем кнопкам (ImageSearch)

DaGer, огромное спасибо.

14

Re: AHK: Клик по всем кнопкам (ImageSearch)

Узнать координаты курсора, окна, элемента в окне, а так же другие полезные данные, можно вызвав "Window Spy", который всегда присутствует в контекстном меню любого запущенного сценария, значок которого висит в трее.