Autohotkey 自动热键:逐步将光标移动到位置

Autohotkey 自动热键:逐步将光标移动到位置,autohotkey,mousemove,Autohotkey,Mousemove,我一直在为此伤脑筋: 我需要一步一步地将光标从当前位置移动到新位置,而不是通过MouseMove,因为它太快(即使最低速度为100)且平滑(不够随机) 我走得最远的是这条路,但我想一定有更好的办法: desX = 100 ;new position X desY = 100 ;new position Y MouseGetPos, posX, posY stepX = %desX% - %posX% stepY = %desY% - %posY% if(stepX > 0 & st

我一直在为此伤脑筋: 我需要一步一步地将光标从当前位置移动到新位置,而不是通过
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
    }
}
desX=100;新位置X
desY=100;新位置Y
MouseGetPos,posX,posY
步骤x=%desX%-%posX%
步骤=%desY%-%posY%
如果(stepX>0和stepY>0)
{
while(posX

这需要为每个可能的方向(例如NW、SW、NE、N)编写大量代码。

我建议编写一个单独的函数,使多个鼠标移动适合起点和终点

例子
你可能需要玩游戏来获得你想要的正确的速度和时间。这只是一个线性增量示例,您可以将其更改为使用对数模型或其他模型。

我建议编写一个单独的函数,使多个鼠标移动适合起点和终点

例子
你可能需要玩游戏来获得你想要的正确的速度和时间。这只是一个线性增量示例,您可以将其更改为使用对数模型或其他模型。

尝试使计算机屏幕看起来像是在为展览而工作。所以,是的。为了一个展览,试着让电脑屏幕看起来像是在自己工作。有点,是的。
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%
}