如何在LUA中设置MoveMouseRelative函数的执行时间?

我是编程新手,需要问一个问题。 所以,这个加载到罗技鼠标上的代码用给定的速度将其下拉:

MoveMouseRelative(0,3)
                        Sleep(25)

问题的实质是:如何在切换到另一个函数之前设置精确的毫秒执行时间,可能像这样:

MoveMouseRelative(0,1)
                        Sleep(18)

所以,鼠标以一定速度移动一段时间,然后切换到另一速度。 这里是修复代码:

EnablePrimaryMouseButtonEvents(true);

function OnEvent(event, arg)

        if IsMouseButtonPressed(3)then
            repeat
                if IsMouseButtonPressed(1) then
                    repeat
                        MoveMouseRelative(0,3)
                        Sleep(25)

                    until not IsMouseButtonPressed(1)
                end
            until not IsMouseButtonPressed(3)
        end
end

我将感激任何支持。

点赞
用户2858170
用户2858170

唯一影响函数执行时间的方式是要么放慢 CPU 的时钟速度(这是无法做到的),要么插入空闲时间。

这就是你已经在使用 sleep 的方式。

注意,计时通常不是非常准确的。因此,不要期望这里有微秒分辨率。

2021-04-30 09:29:47
用户1847592
用户1847592

MoveMouseRelative 的参数总是整数(数字越大移动越快)

Sleep 的参数建议是 15 的倍数(数字越小等待时间越短)

EnablePrimaryMouseButtonEvents(true)

function OnEvent(event, arg)
   Sleep(10)
   if IsMouseButtonPressed(3) and IsMouseButtonPressed(1) then
      local t0 = GetRunningTime()
      repeat
         MoveMouseRelative(0,3)  -- 快速移动
         Sleep(15)
      until GetRunningTime() > t0 + 500  -- 500 毫秒后退出循环
         or not (IsMouseButtonPressed(3) and IsMouseButtonPressed(1))
      repeat
         MoveMouseRelative(0,1)  -- 慢速移动
         Sleep(30)
      until not (IsMouseButtonPressed(3) and IsMouseButtonPressed(1))
   end
end
2021-04-30 12:19:09