win32:使用SetCursorPos与mouse_event移动鼠标

时间:2010-09-15 19:08:59

标签: python winapi input automation

使用以下两种技术在Windows中移动鼠标有什么区别吗?

win32api.SetCursorPos((x,y))

VS

nx = x*65535/win32api.GetSystemMetrics(0)
ny = y*65535/win32api.GetSystemMetrics(1)
win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_MOVE,nx,ny)

Windows处理动作的方式有什么不同吗?

1 个答案:

答案 0 :(得分:4)

我相信mouse_event的作用是将事件插入到鼠标输入流中,而SetCursorPos只是将光标移动到屏幕上。我不相信SetCursorPos也会生成任何输入事件(虽然我可能错了)。

实际意义是当你使用SetCursorPos时,它只是移动光标。当您使用mouse_event时,它会在输入流中插入事件,这些事件又会为正在侦听的任何程序生成输入事件。这对于监听较低级别鼠标事件而不仅仅是光标点击的程序有影响;比如游戏。此外,如果您使用mouse_event移动光标并启用光标/指针加速,则生成的鼠标移动应受窗口正在使用的加速度曲线的影响。