1

Тема: AHK: Движение мыши по координатам

Всем привет!
У меня есть длинный код, который выполняет следующие функции: начинает двигать курсор мыши от координат экрана 600 пикселей по горизонтали и 120 по вертикали вплоть до 1470 по горизонтали (попутно выполняя код), затем возвращается на 600 пикселей по горизонтали, но опускается на 10 пикселей ниже (130 по вертикали) и так далее. То есть скрипт двигает мышь по экрану в пределах координат от 600 до 1470 по горизонтали и от 120 до 980 по вертикали (при опускании каждый раз проходит строку по горизонтали).
Прошу вашей помощи в оптимизации этого кода, чтобы он не занимал так много места.


MouseMove, 600, 120, 0
Gosub, run_code    
MouseMove, 610, 120, 0
Gosub, run_code    
MouseMove, 620, 120, 0
Gosub, run_code
...
...
MouseMove, 1450, 120, 0
Gosub, run_code    
MouseMove, 1460, 120, 0
Gosub, run_code    
MouseMove, 1470, 120, 0
Gosub, run_code 
...
...
MouseMove, 600, 130, 0
Gosub, run_code    
MouseMove, 610, 130, 0
Gosub, run_code    
MouseMove, 620, 130, 0
Gosub, run_code
...
...
MouseMove, 1450, 130, 0
Gosub, run_code    
MouseMove, 1460, 130, 0
Gosub, run_code    
MouseMove, 1470, 130, 0
Gosub, run_code
...
...

2

Re: AHK: Движение мыши по координатам

Как создать цикл - прочитайте в справке про оператор LOOP. Если смещения курсора поддаются какой-то формуле, то нужно эту формулу поместить в цикл, периодически увеличивая / уменьшая значения переменных. Координаты для команды MouseMove брать из этих переменных (для этого обрамить имя переменной знаком процента).

3

Re: AHK: Движение мыши по координатам

Ну, в общем получилось что-то такое. Работает. В данном примере проходит две строки по вертикали. Что-то пока не могу понять, как сюда впихнуть еще что-то, чтобы он работал еще и по вертикали.


!F2::	
MouseMove, 600, 120, 0
	Gosub, test
MouseMove, 600, 130, 0
	Gosub, test
...
goto test_EOF

test:
loop, 85
{
	MouseGetPos, x, y
	x:= x+10
	MouseMove, %x%, y, 0
	sleep, 100
}
test_EOF:
return

4

Re: AHK: Движение мыши по координатам

В тело цикла можно поместить другой цикл.

5 (изменено: ravensblade, 2016-10-21 00:07:08)

Re: AHK: Движение мыши по координатам

Получилось))) Спасибо за подсказки!)

MouseMove, 600, 120, 0
loop, 85
{
	MouseGetPos, x, y
	x = 600
	y:= y+10
	MouseMove, %x%, %y%, 0
		loop, 85
		{
			x:= x+10
			MouseMove, %x%, %y%, 0
			sleep, 100
		}
}
return