win32api 虚拟移动鼠标
我正在尝试用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
可以查看这个链接:多个鼠标/光标?,里面提到了Windows MultiPoint Mouse SDK。我觉得CPNMouse这个项目现在已经不存在了。
2
如果你坚持要假装输入来自动化这个操作,那你就会一直遇到现在的问题。当你假装输入时,系统会像处理真实输入一样来响应。虽然你可以把光标移回原来的位置,但用户会看到光标在那儿闪来闪去。这其实不是个好主意。
你需要的是一个不涉及假装输入的解决方案。当然,你没有详细说明问题,只提到了你的解决办法,所以我们只能猜测你的问题。看起来你是在尝试自动化某个外部应用程序。这个平台通过UIAutomation提供了对这方面的支持。