如何设置LUA中MoveMouseRelative函数的执行时间?
Posted
技术标签:
【中文标题】如何设置LUA中MoveMouseRelative函数的执行时间?【英文标题】:How to set the execution time of the MoveMouseRelative function in LUA? 【发布时间】:2021-07-23 14:58:49 【问题描述】:我是编程新手,需要问一个问题。 因此,加载到罗技鼠标中的这段代码以给定的速度拉下它:
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
感谢您的支持
【问题讨论】:
您可以将repeat
循环替换为for i=1,10 do
循环,以在可预测的时间间隔后退出循环。
【参考方案1】:
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) -- 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
【讨论】:
【参考方案2】:影响函数执行时间的唯一方法是降低 CPU 时钟(您不能)或插入空闲时间。
这就是您使用 sleep
已经在做的事情。
请注意,时间通常不是很准确。所以不要指望微秒级的分辨率。
【讨论】:
以上是关于如何设置LUA中MoveMouseRelative函数的执行时间?的主要内容,如果未能解决你的问题,请参考以下文章