一、背景
在你用电脑时,许多即时通信程序或者游戏页面通过⼀段时间内鼠标指针不动(例如10分钟),来判断你空闲或离开了计算机。也许你想从计算机旁边溜走⼀段时间,但不想让别人发现你离开了,用Python编写⼀段脚本,每隔60秒稍微动⼀下鼠标指针。当你回到电脑桌前点击鼠标右键时,自动退出程序。
二、实现功能
1. pyautogui库来控制鼠标移动
2. time库来设置定时器
3. 一种方法来检测鼠标右键点击
程序运行后看起来像这样:
三、准备工作
pip install pyautogui pynput
四、工作原理
使用pynput.mouse库的Listener来监听鼠标右键点击事件
每60秒,脚本会:
记录当前鼠标位置
将鼠标向右移动2像素
然后将鼠标移回原位
这种微小的移动足以防止系统进入空闲状态,但又不会干扰正常使用
当检测到鼠标右键点击时,程序会设置标志并退出循环
五、完整代码
import pyautogui
import time
import sys
from pynput.mouse import Listener
# 全局变量,用于标记是否检测到鼠标右键点击
right_click_detected = False
def on_click(x, y, button, pressed):
"""监听鼠标点击事件"""
global right_click_detected
# 检测鼠标右键释放事件
if button.name == 'right' and not pressed:
right_click_detected = True
# 停止监听
return False
def main():
print("防空闲程序已启动...")
print("每60秒会轻微移动鼠标")
print("点击鼠标右键可退出程序")
# 启动鼠标监听线程
listener = Listener(on_click=on_click)
listener.start()
try:
while not right_click_detected:
# 获取当前鼠标位置
current_x, current_y = pyautogui.position()
# 轻微移动鼠标(移动2像素,然后移回原位)
pyautogui.moveRel(2, 0, duration=0.1)
pyautogui.moveRel(-2, 0, duration=0.1)
print(f"鼠标已移动 - 当前位置: {current_x}, {current_y}")
# 等待60秒
for _ in range(60):
if right_click_detected:
break
time.sleep(1)
except KeyboardInterrupt:
print("\n程序被用户中断")
print("程序已退出")
if __name__ == "__main__":
main()