win32api虚拟移动鼠标

时间:2014-03-04 21:42:14

标签: python winapi mouse simulation

我正在尝试使用python模拟鼠标点击

我的代码如下:

class Mouse(object):

    def __init__(self):
        self.x_res = win32api.GetSystemMetrics(0)
        self.y_res = win32api.GetSystemMetrics(1)

    def rightClick(self, x, y):
        nx = x*65535/self.x_res
        ny = y*65535/self.y_res
        win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_MOVE,nx,ny)
        win32api.Sleep(200)
        win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_RIGHTDOWN,x,y,0,0)
        win32api.Sleep(200)
        win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_RIGHTUP,x,y,0,0)
        win32api.Sleep(700)

我使用这样的代码:

mouse = Mouse()
win32api.Sleep(2000)
x = 2520
y = 414
mouse.leftClick(x, y)

然而,这会移动真正的鼠标,因此会扰乱用户。它们是一种发送该事件但不移动鼠标的方式吗?

2 个答案:

答案 0 :(得分:1)

如果您坚持伪造输入以自动执行此操作,那么您将遇到当前问题。当您伪造输入时,系统将像实际输入一样响应。您可以将光标恢复到其原始位置,但用户将看到它轻弹。这真的不是一件好事。

您需要的是一个不涉及伪造输入的问题解决方案。当然,你没有详细说明问题,只有你的解决方案,所以我们必须猜测问题。看起来您正在尝试自动化某些外部应用程序。该平台通过UIAutomation提供支持。

答案 1 :(得分:0)

请参阅Multiple mouse/mice/cursor?,其中提到Windows MultiPoint Mouse SDK。 CPNMouse项目已不复存在,AFAICT。