Python实现鼠标自动随机移动及pyautogui高级控制指南
本文介绍如何使用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实现鼠标自动在屏幕上随机移动功能的介绍即为全部内容,希望能为大家提供参考,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









