python - win32api虚拟移动鼠标

标签 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)

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

最佳答案

如果您坚持伪造输入来自动执行此操作,那么您将陷入当前的问题。当您伪造输入时,系统将像真实输入一样做出响应。您可以将光标返回到其原始位置,但用户会看到它在闪烁。这实在不是什么好事。

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

关于python - win32api虚拟移动鼠标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22183683/

相关文章:

python - 无法在 Django 上运行服务器(连接被拒绝)

Python,使用 ctypes 创建 C++ 类包装器

python - 删除除我在 python 列表中的 id 之外的所有记录

c# - 在 XP 上,如何使工具提示显示在半透明表单上方?

当鼠标悬停在 flash 上时,Javascript mousemove 事件不会触发

python - Linux——用Python模拟鼠标点击

python - 具有由数组条目组成的列的 Pandas 查询

winapi - 检索 Windows 上可用的字体大小

python - 基维 - MotionEvent : on_mouse_pos

c++ - 我的 Visual C++ 程序可以监听它自己的调试输出吗?