Тема: AHK: Разная здержка для LButton в одном макросе
Доброго времени суток.
Поиск в гугле к вам привел.
Нужен скрип на разную скорость кликов LButton в одном скрипте.
Нашел на форуме почти то что нужно.
Нужно 2 режима в скрипте.
Режим 1:
Нажатие LButton с заданным интервалом, и возвратом курсора в начальную позицию.
Режим 2:
Нажатие и удержание RButton. При этом LButton нажимается с интервалом отличным от Режим 1, и соответсвенно скорость смещения курсора изменяется тоже.
Взял на форуме вот этот код:
Suspend On
Numpad2::
Suspend Toggle
if (!A_IsSuspended)
{
SoundBeep 2000, 400
}
Else
{
SoundBeep, 2000, 400
SoundBeep, 2000, 400
}
return
~LButton::autofire()
autofire()
{
Loop
{
if GetKeyState("LButton", "P")
{
MouseClick, left,,,, 0, D
Sleep, 63
mouseXY(0, 3)
MouseClick, left,,,, 0, U
mouseXY(0, 1)
sleep, 63
}
else
break
} ;; loop
} ;; autofire()
mouseXY(x,y)
{
DllCall("mouse_event",uint,1,int,x,int,y,uint,0,int,0)
}Лучше бы конечно было, при нажатии LButton запоминать текущее положение курсора, и при кликах возвращать его в исходное положение. ИМХО при помощи MouseGetPos, или CoordMode, но сие к сожалению превосходит предел моих возможностей в скриптинге.
Сделал следующее:
Numpad2::
NumpadDown::
Loop, % (isEnable:=!isEnable)
SoundBeep, 2000, 250
KeyWait, % A_ThisHotkey
Return
*LButton::autofire()
autofire()
{
Loop
{
if GetKeyState("LButton", "P")
{
MouseClick, left,,,,0, D
Sleep, 15
mouseXY(0, 5)
MouseClick, left,,,,0, U
mouseXY(0, 2)
sleep, 15
}
if GetKeyState("RButton", "P")
{
MouseClick, right,,,,,D
Keywait, Rbutton
MouseClick, left,,,,0, D
Sleep, 240
mouseXY(0, 1)
MouseClick, left,,,,0, U
mouseXY(0, 1)
sleep, 240
MouseClick, right,,,,,U
break
}
} ;; loop
} ;; autofire()
mouseXY(x,y)
{
DllCall("mouse_event",uint,1,int,x,int,y,uint,0,int,0)
}Работает косо.
Первый режим - рабочий . А вот второй глючит. При зажимании RButton и зажиме LButton происходит одиночный клик. При втором нажатии LВutton, кликает в обычном режиме - интервал кликов и смещение курсора не работают. При отпускании RButton снова происходит одиночный клик.
Помогите пожалуйста довести до ума. С програмированием знаком поверхностно.

