首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于高精度睡眠的Logitech Lua脚本

用于高精度睡眠的Logitech Lua脚本
EN

Stack Overflow用户
提问于 2022-01-21 02:16:45
回答 2查看 284关注 0票数 0

这是我的尝试,使罗技高精度的延迟,精确到1ms。

为什么你需要高精度的延迟?因为从2004年Win10发布开始,Logitech Sleep(1)实际上已经睡了15.6ms,所以您可能需要一个更精确的Sleep()来保留旧脚本的原始(Win10 1909)行为。

代码语言:javascript
运行
复制
function Sleep3(time)
    local a = GetRunningTime()
    while GetRunningTime()-a < time do
    end
end

Sleep3()的精确度真的等于1ms吗?

EN

回答 2

Stack Overflow用户

发布于 2022-01-21 09:05:59

罗技GetRunningTime()刚刚调用WinAPI函数GetTickCount

正如你从医生那里看到的,

GetTickCount函数的分辨率仅限于系统定时器的分辨率,通常在10毫秒到16毫秒之间。

换句话说,GetRunningTime()返回的值不是顺序整数。

当您在循环中调用GetRunningTime()时,您将收到如下内容:

...,0,15,15,15,...,15,31,31,..,31,46,46,.

这意味着它无法使用GetRunningTime()实现1ms精度的延迟。

Sleep3()的实际精度为15 as,和通常的Sleep()一样。

票数 2
EN

Stack Overflow用户

发布于 2022-01-25 08:00:38

代码语言:javascript
运行
复制
function OnEvent(event,arg)
    if event == "MOUSE_BUTTON_PRESSED" and arg == 4 then
        a = GetRunningTime()
        for i = 1,1000,1 do
            Sleep(1)
        end
        OutputLogMessage((GetRunningTime() - a) / 1000)
    end
end
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70795608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档