我一直在打破这个问题:
我需要一步一步地将光标从当前位置移动到新位置,而不是通过MouseMove
,因为它太快(即使最低速度为100)并且平滑(不够随机)。
我来的最远的是这个,但我认为必须有一个更好的方法:
desX = 100 ;new position X
desY = 100 ;new position Y
MouseGetPos, posX, posY
stepX = %desX% - %posX%
stepY = %desY% - %posY%
if(stepX > 0 & stepY > 0)
{
while(posX < desX & posY < desY)
{
Random, randX, -1, 1
posX := posX + randX
posX++
Random, randY, -1, 1
posY := posY + randY
posY++
MouseMove, posX, posY, 100
MouseGetPos, posX, posY
}
}
这需要为每个可能的方向提供大量代码(例如NW,SW,NE,N)。
答案 0 :(得分:1)
我建议编写一个单独的函数,使多个鼠标移动适合起点和终点。
gradual_mousemove(end_x,end_y,time=1000,delay=10) {
;preserve settings
original_coordmode := A_CoordModeMouse
CoordMode, Mouse, Screen
MouseGetPos, start_x, start_y
;compute deltas
dx := end_x - start_x
dy := end_y - start_y
;delay ms per step
step_t := time / delay
original_mousedelay:=A_MouseDelay
SetMouseDelay, 0
loop % step_t
{
p := (A_index/step_t)
step_x := start_x + (p*dx)
step_y := start_y + (p*dy)
Click, %step_x%, %step_y%, 0 ;move without clicking
sleep, %delay%
;debug info
;ToolTip X: %step_x% Y: %step_y% P: %p% D: %delay% T: %time% S: %A_Index% / %step_t%
MouseGetPos, mx, my
if ( (mx==end_x) && (my==end_y) )
break
}
;ensure correct end point
Click, %end_x%, %end_y%, 0
;reset settings
CoordMode, Mouse, %original_coordmode%
SetMouseDelay, %original_mousedelay%
}
您可能需要一起玩才能获得所需的正确速度和时间。这只是一个线性增量示例,您可以将其更改为使用对数模型或不使用。