0

得到了一个新驱动器并安装了一个新的窗口。

在旧操作系统上之前,我可以使用“睡眠”使“MoveMouseRelative”像自然运动一样工作。

我创建了一个函数,我可以移动鼠标调用它多少次我希望它“移动”

并且每个“移动”之间的毫秒数示例:(效果很好)

function _move(x, range, time, range2)
    for i = 1, x do
    MoveMouseRelative(range,range2)
    Sleep(time)
    end
end 

n

如果我在每个“MoveMouseRelative”之间设置“Sleep(1)”,它会像“Sleep(50)”一样移动,我不知道为什么。

如果我用 50 次 1 毫秒的移动来调用它,则需要 2.5 秒而不是 50 毫秒才能完成

在我的旧驱动器上安装旧操作系统(同一台 PC),我可以使用它通常需要 50 毫秒

它就像软件不会让我使用小毫秒,比如 1 毫秒。

试过了

LGHUB 重新安装

停用 AV

禁用窗户上的东西,

从运行良好的操作系统复制 LGHUB 文件夹

使用 configs(LocalAppdata) 复制 LGHUB 文件夹

我的鼠标是 G502 SE

帮助?

4

1 回答 1

0

TL;DR:
Sleep(1)行为不稳定,不应使用。
Sleep()精度比您想象的要差得多。


长答案:

Sleep()在 LGHUB 脚本内部调用 WinAPI 函数Sleep

文档摘录:

休眠间隔过后,线程就可以运行了。请注意,不保证就绪线程会立即运行。因此,线程可能要等到休眠间隔过去一段时间后才会运行。

系统时钟以恒定速率“滴答”。如果 dwMilliseconds 小于系统时钟的分辨率,则线程可能休眠的时间少于指定的时间长度。如果 dwMilliseconds 大于 1 个滴答但小于 2 个滴答,则等待可能介于 1 到 2 个滴答之间,依此类推。

这里的“tick”是“时间片”长度,在我的 Windows 上为 15 毫秒(但在其他 Windows 版本上可能为 10 毫秒)。

正如您从上面的文档中看到的,该Sleep()函数具有一个“滴答”的精度,因此Sleep(1)设计的行为是不稳定的。

于 2020-10-28T19:36:33.770 回答