Blinue / Magpie

An all-purpose window upscaler for Windows 10/11.
GNU General Public License v3.0
9.69k stars 496 forks source link

修复光标移动到叠加层或其他窗口时有时会跳跃的问题 #866

Closed Blinue closed 8 months ago

Blinue commented 8 months ago

在调试过程中,我发现 SetCursorPos 无法可靠移动光标,虽然调用之后立刻查询光标位置没有问题,但经过一段时间后再次查询会发现光标位置又回到了设置之前。我怀疑这是因为 OS 异步处理硬件输入队列,SetCursorPos 时队列中仍有旧事件尚未处理。

现在使用 SendInput 将移动光标的事件插入输入队列,然后等待系统处理到该事件,避免了并发问题。如果设置不成功则多次尝试。这里旨在尽最大努力,因为这是 OS 的 bug,我怀疑是否有完美的解决方案。

经过测试,新方案似乎解决了问题,我没有再遇到光标跳跃的问题。