1 (изменено: Ядрён, 2016-05-10 23:45:44)

Тема: AHK: Включить выключить фрагменты в цикле посредством Checkbox

Доброго времени суток. Подскажите пожалуйста как объединить эти 3 скрипта в одном цикле , что бы они нормально работали со всеми задержками "Sleep" , и каждый из них можно было (вкл|выкл) посредством Checkbox. Если использовать выражение  "If" то все задержки "Sleep" плюсуются друг к другу а это критично в этом коде.

1- Двигает курсор мыши

*~WheelUp:: ;  активация макроса
Suspend, Off
MoveOFF := 1
MoveON := 0
Return 

*~WheelDown::
MoveOFF := 0
MoveON := 0
return

*~vk51::  
MoveOFF := 0
MoveON := 1
return

*~$vk1::
while GetKeyState("vk1","P")
{
 If MoveOFF

DllCall("mouse_event", uint, 1, int, 2, int, 3, uint, 0, int, 0) ; Двигает курсор мыши
  Sleep, 25      ; первая задержка
    Sleep, 20    ;   первая задержка
  
if MoveON
 
DllCall("mouse_event", uint, 1, int, 0, int, 2, uint, 0, int, 0) ; Двигает курсор мыши
    Sleep, 40   ; вторая задержка
}
Return

2- кликер

*~$vk1::
  while GetKeyState("vk1","P")
{
DllCall("mouse_event", UInt, 0x02, Int, 0, Int, 0, UInt, 0, Int, 0) ; нажать левую кнопку мыши

  Sleep, 23
DllCall("mouse_event", UInt, 0x04, Int, 0, Int, 0, UInt, 0, Int, 0) ; отпустить левую кнопку мыши

  Sleep, 26
}
Return

3- Нажимает отпускает правую кнопку мыши

*~$vk1::
 GetKeyState("vk1","P")

DllCall("mouse_event", UInt, 0x08, Int, 0, Int, 0, UInt, 0, Int, 0) ; нажать правую кнопку мыши
    sleep, 40
 
DllCall("mouse_event", UInt, 0x010, Int, 0, Int, 0, UInt, 0, Int, 0) ; отпустить правую кнопку мыши
sleep, 4

  KeyWait, vk1
sleep, 4

DllCall("mouse_event", UInt, 0x08, Int, 0, Int, 0, UInt, 0, Int, 0) ; нажать правую кнопку мыши
      sleep, 40
  
DllCall("mouse_event", UInt, 0x010, Int, 0, Int, 0, UInt, 0, Int, 0) ; отпустить правую кнопку мыши
Return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

2

Re: AHK: Включить выключить фрагменты в цикле посредством Checkbox

Вот два скрипта слепил (криво конечно но работает) , но вот третий никак. Как раз третий скрипт должен активироваться от "LButton" но не должен находиться в одном цикле с теми двумя.


*~WheelUp:: ;  активация макроса
Suspend, Off
MoveOFF := 1
MoveON := 0

*~WheelDown::
MoveOFF := 0
MoveON := 0
   n := 0
o := 0
return

*~vk51::  ; Q 
MoveOFF := 0
MoveON := 1
return

vk75::  ; F6, пока сделал на кнопку
If keystroke = 
  {
    keystroke = 1 
     n := 0x02
o := 0x04
SoundBeep, 1000
  }
Else if keystroke = 1 
  {
    keystroke =
    n := 0
o := 0
SoundBeep, 1000
  }
return

; 0x02 нажать лкм
; 0x04 отпустить лкм

*~LButton::
while GetKeyState("LButton","P")
{
  If MoveOFF

DllCall("mouse_event", uint, 1, int, 2, int, 3, uint, 0, int, 0) ;  движение мыши

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

 Sleep, 25     ; первая задержка

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

Sleep, 20    ;   первая задержка
 
  if MoveON
 
DllCall("mouse_event", uint, 1, int, 0, int, 2, uint, 0, int, 0) ; движение мыши

   Sleep, 40   ; вторая задержка
}
Return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

3 (изменено: Ядрён, 2016-05-14 02:41:36)

Re: AHK: Включить выключить фрагменты в цикле посредством Checkbox

Спасибо огромное всем за помощь, сам разобрался.
Вот решение через костыль.

*~WheelUp:: ;  активация макроса
Suspend, Off
MoveOFF := 1
Return

*~WheelDown::
MoveOFF := 0
   n := 0
o := 0
return

*~vk51::  ; Q 
MoveOFF := 0
return

vk76::  ; F7 пока сделал на кнопку
Suspend, Off
If keystroke = 
  {
    keystroke = 1 
     np := 0x08 
op := 0x010
SoundBeep, 1000
  }
Else if keystroke = 1 
  {
    keystroke =
    np := 0
op := 0
SoundBeep, 1000
  }
return

return

vk75::  ; F6 пока сделал на кнопку
Suspend, Off
If keystroke = 
  {
    keystroke = 1 
     n := 0x02
o := 0x04
SoundBeep, 1000
  }
Else if keystroke = 1 
  {
    keystroke =
    n := 0
o := 0
SoundBeep, 1000
  }
return
  
; 0x02 нажать лкм
; 0x04 отпустить лкм
;0x08 нажать пкм
;0x010 отпустить пкм

*~$LButton::

      DllCall("mouse_event", UInt, np, Int, 0, Int, 0, UInt, 0, Int, 0) ; нажать правую кнопку мыши
    sleep, 40  
  DllCall("mouse_event", UInt, op, Int, 0, Int, 0, UInt, 0, Int, 0) ; отпустить правую кнопку мыши
while GetKeyState("LButton","P")
{
if MoveOFF
      DllCall("mouse_event", uint, 1, int, x, int, y, uint, 0, int, 0) ; для основного оружия движение мыши
DllCall("mouse_event", UInt, n, Int, 0, Int, 0, UInt, 0, Int, 0) ; нажать левую кнопку мыши
    Sleep, Time      ; первая задержка
DllCall("mouse_event", UInt, o, Int, 0, Int, 0, UInt, 0, Int, 0)  ; отпустить левую кнопку мыши
  Sleep, Timee    ;   первая задержка
}
DllCall("mouse_event", UInt, np, Int, 0, Int, 0, UInt, 0, Int, 0) ; нажать правую кнопку мыши
   sleep, 40  
 DllCall("mouse_event", UInt, op, Int, 0, Int, 0, UInt, 0, Int, 0) ; отпустить правую кнопку мыши
return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).