罗技 lua 可靠睡眠
Posted
技术标签:
【中文标题】罗技 lua 可靠睡眠【英文标题】:Logitech lua reliable Sleep 【发布时间】:2021-05-15 04:51:10 【问题描述】:简介
我正在为我的罗技鼠标编写一个 lua 脚本。罗技 lua api 有 this 文档。
我的脚本每 x 毫秒移动一次鼠标以绘制图案。我的问题是这个 lua api 的 Sleep(x) 函数非常不准确。我已经读过它需要时间(几毫秒)才能获得一个线程,因此时间会增加代码本身的执行时间。然而,它使得它无法测量毫秒。
问题
您知道解决方法吗?有没有比 Sleep(x) 函数更强大的毫秒测量方法?
我还想指出,在 Windows 10 版本 1909 及以下版本中,它要准确得多。他们弄乱了它,因此自 Windows 10 2004 版(去年 8 月左右)以来它是不准确的。所以我需要为此找到解决方法。
我的代码
这是我的代码中的一个 sn-p:
PressMouseButton(1)
--1
MoveMouseRelative(-26, 36)
Sleep(127)
--2
MoveMouseRelative(2, 36)
Sleep(127)
--3
MoveMouseRelative(-36, 32)
Sleep(127)
--4
MoveMouseRelative(-33, 30)
Sleep(127)
--5
MoveMouseRelative(-11, 38)
Sleep(127)
ReleaseMouseButton(1)
这本身不起作用,但您可以在此处查看我想如何使用该功能。 感谢您的帮助!
【问题讨论】:
为什么首先需要毫秒精度? Sleep with better precision 【参考方案1】:Sleep
不用于测量毫秒。它会暂停您的脚本一段时间。
据我所知,无法从 Logitech 脚本加载任何库。
所以你只能使用Sleep
或者运行一个循环来延迟。
【讨论】:
您好,首先感谢您的回答!所以我想我不清楚,我不希望它来衡量时间。我需要这个函数来停止我的程序一段准确的时间,以毫秒为单位。正如我现在看到的,这个函数对于这个目的不够准确。当您说“运行循环以延迟”时,您到底是什么意思?你能为此展示一个代码示例吗?感谢您的宝贵时间 井延迟通常使用循环来实现。循环周期越多,执行所需的时间就越长。这样您就可以实现自己的延迟功能并对其进行调整。但总的来说,无论如何您都不应该期望这样的应用程序具有毫秒精度。【参考方案2】:给你发个罗技高精度延时,精确到1ms,为什么要高精度,因为win10 1909以后的系统版本,罗技脚本1ms=15.6ms,所以需要
function Sleep3(time)
local a = GetRunningTime()
while GetRunningTime()-a < time do
end
end
【讨论】:
以上是关于罗技 lua 可靠睡眠的主要内容,如果未能解决你的问题,请参考以下文章