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