Cla*_*diu 7 python winapi automation input
使用以下两种技术在窗口中移动鼠标有什么区别吗?
win32api.SetCursorPos((x,y))
Run Code Online (Sandbox Code Playgroud)
对比:
nx = x*65535/win32api.GetSystemMetrics(0)
ny = y*65535/win32api.GetSystemMetrics(1)
win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_MOVE,nx,ny)
Run Code Online (Sandbox Code Playgroud)
Windows 处理移动的方式是否有什么不同?
我相信这是mouse_event通过将事件插入鼠标输入流来实现的,只需SetCursorPos在屏幕上移动光标即可。我也不相信 SetCursorPos 会生成任何输入事件(尽管我可能是错的)。
实际含义是,当您使用 时SetCursorPos,它只是移动光标。当您使用 时mouse_event,它会将事件插入输入流中,这将为正在侦听的任何程序生成输入事件。这对于侦听较低级别鼠标事件而不仅仅是光标单击的程序有影响;例如游戏。另外,如果您用于mouse_event移动光标并打开光标/指针加速,则产生的鼠标运动应受到窗口正在使用的任何加速曲线的影响。