如何在Python中控制鼠标光标,即移动到特定位置并单击,在Windows下?


当前回答

从2022年开始,你可以使用鼠标:

import mouse
mouse.move("500", "500")
mouse.click() # default to left click
# mouse.right_click()
# mouse.double_click(button='left')
# mouse.double_click(button='right')
# mouse.press(button='left')
# mouse.release(button='left')

完整的Api文档

特性

所有鼠标设备上的全局事件钩子(捕获事件而不管 聚焦)。 监听并发送鼠标事件。 适用于Windows和Linux(需要sudo)。 纯Python,不需要编译C模块。 零依赖关系。简单的安装和部署,只需复制 文件。 Python 2 / 3 包括高级API(例如记录和播放)。 事件自动捕获在单独的线程,不阻塞主 程序。 测试并记录。


安装

Windows: pip安装鼠标 Linux: sudo pip install mouse

其他回答

测试在WinXP, Python 2.6(3。在安装pywin32(在我的情况下是pywin32-214.win32-py2.6.exe)后:

import win32api, win32con
def click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
click(10,10)

你可以使用win32api或ctypes模块来使用win32api来控制鼠标或任何gui

下面是一个使用win32api控制鼠标的有趣例子:

import win32api
import time
import math

for i in range(500):
    x = int(500+math.sin(math.pi*i/100)*500)
    y = int(500+math.cos(i)*100)
    win32api.SetCursorPos((x,y))
    time.sleep(.01)

使用ctypes进行单击:

import ctypes

# see http://msdn.microsoft.com/en-us/library/ms646260(VS.85).aspx for details
ctypes.windll.user32.SetCursorPos(100, 20)
ctypes.windll.user32.mouse_event(2, 0, 0, 0,0) # left down
ctypes.windll.user32.mouse_event(4, 0, 0, 0,0) # left up

从2022年开始,你可以使用鼠标:

import mouse
mouse.move("500", "500")
mouse.click() # default to left click
# mouse.right_click()
# mouse.double_click(button='left')
# mouse.double_click(button='right')
# mouse.press(button='left')
# mouse.release(button='left')

完整的Api文档

特性

所有鼠标设备上的全局事件钩子(捕获事件而不管 聚焦)。 监听并发送鼠标事件。 适用于Windows和Linux(需要sudo)。 纯Python,不需要编译C模块。 零依赖关系。简单的安装和部署,只需复制 文件。 Python 2 / 3 包括高级API(例如记录和播放)。 事件自动捕获在单独的线程,不阻塞主 程序。 测试并记录。


安装

Windows: pip安装鼠标 Linux: sudo pip install mouse

如果你需要玩游戏的话。正如本文https://www.learncodebygaming.com/blog/pyautogui-not-working-use-directinput中所解释的,像《我的世界》或《堡垒之夜》等游戏都有自己的鼠标/键盘事件注册方式。控制鼠标和键盘事件的方法是使用全新的PyDirectInput库。他们的github知识库是https://github.com/learncodebygaming/pydirectinput,有很多很棒的信息。 下面是一个快速的代码,执行鼠标循环,点击:

import pydirectinput  # pip install pydirectinput


pydirectinput.moveTo(0, 500)
pydirectinput.click()

尝试使用pyautogui,简单,也可以模拟键盘上的按键