WinAPI SetCursorPos似乎无法在具有不同分辨率的多台显示器上正常工作

我正在尝试将鼠标位置调整到目标窗口位置的中心。为此,我预先计算了导致中心位置的X和Y坐标。为了执行鼠标移动,我使用了winapi中的“ SetCursorPos”方法。我的问题是,如果光标位于较低分辨率的显示器(全高清)上并且必须移至较高分辨率的显示器(UHD),则该函数无法正确对齐x值。

我发现如果Y值在窗口中心位置Y值的范围内,它将正确执行操作。

[当Y值高于或小于允许的Y范围(1080)时,光标的X将设置为目标监视器的左边缘(x = 0),这意味着光标现在显示在显示正确的鼠标Y位置,但鼠标X位置错误。

enter image description here

我想到了第二次执行SetCursorPos方法的想法,这导致了成功。我猜是第一次,该方法考虑了鼠标最初来自的监视器的Y值范围。第二次,光标已显示在高分辨率监视器上,这迫使该方法使用其Y范围。

任何人都有更好的主意如何绕过此问题?

0
投票

您是否找到了其他解决方案?

在Win10 1909(更新为2003-> Build 18363.720上,我还需要两次调用SetCursorPos()。

EVEN WORSE,当光标移至第二台显示器的中心位置(2台显示器的设置)时,我可以看到光标在正确的中心位置,当我移动鼠标时,它会跳到似乎完全位于其他位置随机。

因此,开始移动鼠标时未使用鼠标光标的正确设置位置...