Autohotkey MouseMove不';好像不行

Autohotkey MouseMove不';好像不行,autohotkey,mousemove,Autohotkey,Mousemove,我做了一个(工作)自动点击器,我想添加一些修改。 我想让代码在调用AutoClick函数时获取鼠标的当前位置。现在,当它调用ClickClick函数时,它会得到鼠标的当前位置。之后,它将鼠标捕捉回原始位置(oX、oY)并单击。单击后,它跳到鼠标刚好位于(x,y)的位置。单击部分工作,但鼠标根本不移动。 我不知道该怎么做才能修复它 ^h::AutoClick() ^j::ExitApp AutoClick(Interval=100){ MouseGetPos, xpos, ypos

我做了一个(工作)自动点击器,我想添加一些修改。 我想让代码在调用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

   }

首先,您需要注意一些重构——从函数中取出计时器的子例程。它不属于那里;另外,它不会与函数隔离,因为它是全局的

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