1 (изменено: Dreacolt, 2021-09-24 16:54:53)

Тема: AHK: Сравнение переменных.

Доброго времени суток.

Есть рабочий скрипт, который хотел немного переделать, но не смог найти как правильно это сделать, вот скрипт:

#Persistent
SetTimer,Timer,300
Return

Timer:
     MouseGetPos,x1,y1
     Sleep,100
     MouseGetPos,x2,y2
     If ((x1<>x2) or (y1<>y2))
         {
         Send {s}
         Return
         }
return
delete::exitapp

А вот так хочу реализовать скрипт:
Когда нажимается клавиша "А", скрипт записывает координаты мыши в x1, y1.
После начинается цикл - скрипт постоянно записывает и перезаписывает координаты мыши в x2, y2, и когда координаты x2 или y2 - больше или меньше минимум на 300 по сравнению с x1 либо y1 - скрипт нажимает на клавишу "S" 1 раз.

Смысл такой, если после клавиши "А" - курсор мыши не уходит далеко - ничего не происходит, но как только курсор мыши уходит далеко от координат клавиши "А" - нажимается клавиша "S".

Весь день гуглил про переменные и выражения но так и не нашел как правильно написать код, help.

2

Re: AHK: Сравнение переменных.

Для начала, в вашем скрипте нет реакции на нажатие клавиши "А", нужно установить для неё горячую клавишу, по которой будут сначала сохраняться координаты мыши, затем запускаться таймер, по которому, в свою очередь, будут извлекаться новые координаты и сравниваться со старыми. Чтобы узнать, насколько одна переменная больше другой, нужно выполнить такой код:

x2 := 200, x1 := 300
difference := Abs(x2 - x1)
MsgBox, % difference
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Сравнение переменных.

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


MouseGetPos, x1, y1
left := x1 - 300
right := x1 + 300
up := y1 - 300
down := y1 + 300

4

Re: AHK: Сравнение переменных.

Благодарю, получился вот такой код, вроде рабочий:

~a::
MouseGetPos,x1,y1
Loop
{
MouseGetPos,x2,y2
If ((x2 - x1) < -350 or (x2 - x1) > 350 or (y2 - y1) < -250 or (y2 - y1) > 250)
break
}
Send {s}
return

5

Re: AHK: Сравнение переменных.

Рабочий, но не оптимальный. Такой цикл будет грузить процессор (загляните в Диспетчер задач). Чтобы избежать этого, добавьте в цикл Sleep, 10, но лучше просто использовать таймер.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder