MouseMove似乎不起作用

时间:2017-07-15 00:51:04

标签: autohotkey mousemove

我做了一个(工作)自动点击器,我想添加一些修改。 我希望代码在您调用AutoClick函数时抓住鼠标的当前位置。现在当它调用ClickClick函数时,它会获得当前鼠标的当前位置。之后,它将鼠标按回原始位置(oX,oY)并单击。点击后,它会跳转到鼠标位于(x,y)的位置。点击部分有效,但鼠标根本不动。 我不知道该怎么办才能解决它。

^h::AutoClick()

^j::ExitApp

AutoClick(Interval=100){

   MouseGetPos, xpos, ypos

   oX = %xpos%
   oY = %ypos%

   static Toggler

   Toggler := !Toggler

   TPer := Toggler ? Interval : "off"

   SetTimer, ClickClick, %TPer%

   return

   ClickClick:

   BlockInput On
   MouseGetPos, x, y
   MouseMove, %oX%, %oY%, 0
   Click
   MouseMove, %x%, %y%, 0
   BlockInput Off

   return

   }

1 个答案:

答案 0 :(得分:1)

首先,您需要进行一些重组 - 让您的Timer子程序退出该功能。它并不属于那里;加上它无论如何都不会被孤立到函数中,因为它是全局的。

oX,oY变量实际上与函数隔离,因此仅在该函数中可用。除非你宣布它们是全球性的。

oX:=oY:=""
^h::AutoClick()
^j::ExitApp

AutoClick(Interval=100){
    global oX, oY
    static Toggler
    MouseGetPos, xpos, ypos
    oX = %xpos%
    oY = %ypos%
    Toggler := !Toggler
    TPer := Toggler ? Interval : "off"
    SetTimer, ClickClick, %TPer%
    return
}

ClickClick:
BlockInput On
MouseGetPos, x, y
MouseMove, %oX%, %oY%, 0
Click
MouseMove, %x%, %y%, 0
BlockInput Off
return

或者,您可以让函数返回一个值(在本例中为鼠标坐标)并将它们传递回ClickClick。