1

Тема: AHK: Память о нажатии горячей клавише в скрипте

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

+ открыть спойлер

Думаю что нужно использовать встроенную переменную "A_ThisHotkey", но незнаю как реализовать.

$*~vk57:: ;W

 DllCall("Sleep", UInt, 40)
if MoveOFF555
MouseClick, X1,,, 1, 0, D

KeyWait, vk57 ;W 

MouseClick, X1,,, 1, 0, U
 

return

*~vk51::  ; Q 
npp := 0x08 
opp := 0x010
return

*~$vkA0:: ;lhift
MoveOFF555 := 0
KeyWait, vkA0
MoveOFF555 := 1
Return

*~WheelUp:: ; колёсик вверх
MoveOFF555 := 1
npp := 0
opp := 0
Return

*~WheelDown:: ; колёсик вниз
MoveOFF555 := 1
np := 0 
op := 0
return

*~vk76::  ; F7 ;  активация 
Suspend, Off
Gui Submit, NoHide
If keystroker = 1
  {
    keystroker = 

     np := 0
op := 0

SoundBeep, 1000
  }
Else if keystroker = 
  {
    keystroker = 1
    np := 0x08 
op := 0x010

SoundBeep, 1000
  }
return

*~$LButton::
DllCall("mouse_event", UInt, npp, Int, 0, Int, 0, UInt, 0, Int, 0) ; нажать правую кнопку мыши

    DllCall("Sleep", UInt, 40) 

  DllCall("mouse_event", UInt, opp, Int, 0, Int, 0, UInt, 0, Int, 0) ; отпустить правую кнопку мыши

    DllCall("mouse_event", UInt, np, Int, 0, Int, 0, UInt, 0, Int, 0) ; нажать правую кнопку мыши

    DllCall("Sleep", UInt, 40) 

  DllCall("mouse_event", UInt, op, Int, 0, Int, 0, UInt, 0, Int, 0) ; отпустить правую кнопку мыши

while GetKeyState("LButton","P")

 {
   Click

     Sleep, 40

SetMouseDelay, 50 ,50

}
return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).