1 (изменено: noteless, 2020-03-02 16:16:54)

Тема: AHK: Нажатие левой кнопки мыши - действие, нажатие правой отмена

Я не волшебник, я только учусь (с) на примерах.
Но подходящий пример не нашел.
Скрипт по нажатию кнопки нажимает Е и ждет клика левой мышью, потом отрабатывает остальное.
Но если нужно отменить действие (в игре это правая кнопка мыши), то игровое-то действие отменяется, а вот скрипт продолжает ждать нажатие левой кнопки мыши.
Как сделать, чтобы при нажатии правой кнопки мыши скрипт возвращался в исходное положение?
Предполагаю, что через GetKeyState и If, но все что пробовал не работает, знаний не хватает )



*XButton1::
Send {e Down}
Sleep, 64
Send {e Up}
KeyWait, LButton, D
Send {LButton Down}
Sleep, 64
Send {LButton Up}
Sleep, 500
Send {e Down}
Sleep, 64
Send {e Up}
Return

2 (изменено: noteless, 2020-03-02 16:25:39)

Re: AHK: Нажатие левой кнопки мыши - действие, нажатие правой отмена

вроде сообразил )


*XButton1::
Send {e Down}
Sleep, 64
Send {e Up}
Loop
{
if GetKeyState("LButton", "P")
 {
   Send {LButton Down}
   Sleep, 64
   Send {LButton Up}
   Sleep, 500
   Send {e Down}
   Sleep, 64
   Send {e Up}
   break
 }
if GetKeyState("RButton", "P")
break
}
Return

3 (изменено: stealzy, 2020-03-03 00:29:06)

Re: AHK: Нажатие левой кнопки мыши - действие, нажатие правой отмена

*XButton1::
	SetKeyDelay,, 64
	Send {e}
	KeyWait LButton, D
	; Send {LButton}
	Sleep 500
	Send {e}
Return

~RButton::Reload
Win7x64, AutoHotkey 1.1.30.00

4

Re: AHK: Нажатие левой кнопки мыши - действие, нажатие правой отмена

stealzy
спасибо за пример более оптимального кода, на будущее пригодится )

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

5 (изменено: serzh82saratov, 2020-03-04 00:00:53)

Re: AHK: Нажатие левой кнопки мыши - действие, нажатие правой отмена


*XButton1::
	KeyWait := 1
	SetKeyDelay,, 64
	Send {e} 
	While !GetKeyState("LButton", "P") && KeyWait
		Sleep 20
	If !KeyWait
		Return
	KeyWait := 0
	Send {LButton} 
	Sleep, 500
	Send {e} 
	Return

#If KeyWait
~RButton:: KeyWait := 0
#If
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.33.00 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui