Pyhon DirectInput鼠标相对移动行为与预期不符

时间:2018-05-30 09:32:42

标签: python python-3.x mouse directinput

我找到了通过DirectInput模拟鼠标移动的解决方案。重点是使用python脚本在3D游戏中导航角色。这意味着必须使用相对鼠标移动。

一切正常,但是当我尝试在游戏中计算 x单位之间的关系<(在MouseMoveTo函数中)和角度字符时,我发现 aritmetics确实不能工作

例如:

当我移动鼠标 2 x 200单位左然后 1 x 400单位右字符不看同一方向(如果在桌面上,光标不在同一位置)< / p>

2x200&lt; 1x400

如果我尝试动画动画(例如将动作分为50步),情况会更糟。

我做错了什么或者这是正常行为?如果它是正常行为,有什么方法可以计算出正确的单位传递给MouseMove To()吗?

((a*b)/c^2) * c

2 个答案:

答案 0 :(得分:0)

好吧...问题是Windows的“增强指针精度”设置,总之,它使小(慢)鼠标移动得更小而大(快)鼠标移动得更大……

将其关闭后,一切正常。

有关此窗口的更多信息,请点击此处https://www.howtogeek.com/321763/what-is-enhance-pointer-precision-in-windows/

答案 1 :(得分:0)

只需运行以下代码...

def MouseMoveTo(x, y):
        x = 1 + int(x * 65536./1920.)#1920 width of your desktop
        y = 1 + int(y * 65536./1080.)#1080 height of your desktop
        extra = ctypes.c_ulong(0)
        ii_ = Input_I()
        ii_.mi =  MouseInput(x,y,0, (0x0001 | 0x8000), 0, ctypes.pointer(extra) )
        x = Input( ctypes.c_ulong(0), ii_ )
        SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))