Python实现鼠标自动随机移动及pyautogui高级控制指南

沈知远
沈知远
发布时间:2026-10-13| 6人浏览过
原创

本文介绍如何使用Python实现鼠标在屏幕上随机移动以防止电脑自动休眠,提供基于pymouse和win32api的完整代码示例。同时深入解析pyautogui库的高级功能,涵盖屏幕截图、像素颜色检测、图片定位、鼠标点击拖动及键盘热键组合等自动化操作指令,帮助开发者高效构建桌面自动化工具。

Python鼠标自动移动防休眠方案

起初尝试通过控制鼠标自动移动来防止公司电脑进入休眠状态,虽然功能已实现,但实际效果并不理想,系统依然会休眠。尽管如此,仍将此方案分享出来,测试环境为Windows 10系统。

首先需要安装pymouse、pyhook、pywin32以及pyuserinput等多个第三方库。尽管示例代码中仅直接引用了pymouse和win32api,但如果未安装所有相关依赖包,程序运行时将会报错。

接下来查看具体的实现代码。


from pymouse import PyMouse
from win32api import GetSystemMetrics
import random
import time

m = PyMouse()
m.position()

width = GetSystemMetrics(0)
heigth = GetSystemMetrics(1)

m.move(100, 100)
while True:
 x = random.randint(0, width)
 y = random.randint(0, heigth)
 m.move(x, y)
 time.sleep(random.randint(3, 5))

pyautogui库自动化操作详解

补充知识:Python控制鼠标移动与自动化操作,涉及pyautogui和PyMouse库的使用。

方法1:使用pyautogui库。

安装命令:pip install pyautogui。

官方文档参考。

基本操作指令配置。

设置gui.PAUSE=0.5,表示每次函数调用后暂停0.5秒;设置gui.FAILSAFE=True,以启动自动防故障功能。

屏幕处理功能

注意,此处将pyautogui库重命名为gui以简化调用。该库能够处理电脑屏幕、鼠标和键盘等硬件资源。首先从屏幕处理功能开始介绍:

获取屏幕尺寸使用W,H=gui.size(),其中W和H分别代表屏幕的宽度和高度;进行截屏操作可使用im=gui.screenshot(),im变量即为截取的屏幕快照图片;若要获取屏幕上(x,y)坐标处的颜色值,可使用RGB=GetScreenShow().getpixel((x,y));判断指定坐标处的颜色是否符合给定值,可使用以下代码:

def is_screen_locate_color(x,y,r,b,g): im=GetScreenShow() return gui.pixelMatchesColor(x,y,(r,b,g))

如果屏幕上存在图片,如何获取该图片在屏幕上的位置及大小?可使用以下代码:

def get_png_all_location(PNGfile):# return list(gui.locateAllOnScreen(PNGfile))

该函数返回一个列表,格式如[(x1,y1,w1,h1),(x2,y2,w2,h2),(x3,y3,w3,h3)]。若屏幕上仅存在一张此类图片,列表中将只包含一项[(x1,y1,w1,h1)],表示该图片的位置坐标(x1,y1)及其尺寸(w1,h1)。

鼠标控制指令

其次,介绍鼠标控制方法。使用gui.position()可返回当前鼠标位置(x,y);实现模拟点击可使用:

def click_position(x,y,buttonkey='left'):#模拟点击(默认左键) gui.click(x,y,button=buttonkey)

模拟鼠标左键双击操作:

def double_click(x,y): gui.doubleClick(x,y)

模拟按下左键并拖动鼠标(相对于原位置):

def drag_rel(dx,dy): gui.dragRel(dx,dy,duration=0.2)

模拟按下左键并拖动鼠标(移动到绝对位置):

def drag_to(x,y): gui.dragTo(x,y,duration=0.2)

模拟将鼠标移动到指定的X,Y坐标:

def move_to(x,y): gui.moveTo(x,y)

窗口滚动与键盘模拟

模拟窗口滚动操作:

def scroll_window(n): gui.scroll(n)#n为正数表示向上滚动,为负数表示向下滚动

第三部分为模拟键盘操作,以下是键盘上部分常用键的定义:

'a', 'A', '1','!', '@', '#',等等 单个字符的键 'enter'(or 'return' or '\n') 回车键 'esc' Esc 键 'shiftleft', 'shiftright' 左右 Shift 键 'altleft', 'altright' 左右 Alt 键 'ctrlleft', 'ctrlright' 左右Ctrl 键 'tab'(or '\t') Tab 键 'backspace', 'delete' Backspace 和 Delete 键 'pageup', 'pagedown' Page Up 和 Page Down 键 'home', 'end' Home 和 End 键 'up', 'down', 'left', 'right' 上下左右箭头键 'f1', 'f2', 'f3',等等 F1 至 F12 键

发送字符串使用gui.typewrite(textstr)、

按下键使用gui.keyDown(keyname)、

释放键使用gui.keyUp(keyname)、

按键使用gui.press(char)、#

热键组合如:ctrl+c可使用gui.hotkey(keyname,char)。

多个热键组合可按顺序输入多个参数,例如:Ctrl-alt-shift-s。

可输入gui.hotkey('ctrl','alt','shift','s')。

鼠标移动相关操作总结。


import pyautogui
pyautogui.moveRel(50,50,durtion=1) //根据当前位置, 相对移动鼠标指针 durtion移动时间
pyautogui.position() //获取当前鼠标位置

以上关于Python实现鼠标自动在屏幕上随机移动功能的介绍即为全部内容,希望能为大家提供参考,也希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。