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

如何在LUA中设置MoveMouseRelative函数的执行时间?,lua,logitech-gaming-software,Lua,Logitech Gaming Software,我是编程新手,需要问一个问题。 因此,加载在logitech鼠标中的代码以给定的速度将其下拉: MoveMouseRelative(0,3) Sleep(25) 问题的实质:在切换到另一个功能之前,如何设置此功能工作的准确时间(毫秒),可能如下所示: MoveMouseRelative(0,1) Sleep(18) 所以,鼠标以一种速度移动一段时间,然后切换到另一种速度。 以下是要修复的代码: E

我是编程新手,需要问一个问题。 因此,加载在logitech鼠标中的代码以给定的速度将其下拉:

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

我将非常感谢任何支持

影响函数执行时间的唯一方法是关闭cpu时钟(您不能这样做)或插入空闲时间

这就是您已经在使用
sleep
进行的操作


请注意,计时通常不是很准确。所以这里不要期望微秒级的分辨率。

MoveMouseRelative参数总是整数(越大越快)
Sleep
参数建议为15的倍数(越小越快)


您可以将
repeat
循环替换为
for i=1,10 do
循环,以在可预测的时间间隔后退出循环。
EnablePrimaryMouseButtonEvents(true)
 
function OnEvent(event, arg)
   Sleep(10)
   if IsMouseButtonPressed(3) and IsMouseButtonPressed(1) then
      local t0 = GetRunningTime()
      repeat
         MoveMouseRelative(0,3)  -- move fast
         Sleep(15)
      until GetRunningTime() > t0 + 500  -- exit this loop after 500 ms
         or not (IsMouseButtonPressed(3) and IsMouseButtonPressed(1))
      repeat
         MoveMouseRelative(0,1)  -- move slow
         Sleep(30)
      until not (IsMouseButtonPressed(3) and IsMouseButtonPressed(1))
   end 
end