Python实现后台截屏工具和截屏图片浏览工具
一、后台截屏工具
程序运行时有系统托盘图标。它会定期截取屏幕图像并保存,但当检测到白名单中的应用窗口处于打开状态时,会暂停截屏,避免在使用特定应用(如微信)时被截屏。
程序原理
- 定期截屏:程序会按照设定的时间间隔(默认5秒)自动截取整个屏幕并保存为PNG图片。
- 白名单机制:程序维护一个应用窗口标题的白名单,当这些窗口处于打开状态时,程序会暂停截屏。
- 命令行参数:用户可以通过命令行参数自定义截屏间隔、保存路径和额外的白名单应用。
如何使用
- 基本使用:直接运行程序,使用默认设置
python screenshot_program.py
- 自定义截屏间隔:
python screenshot_program.py --sleep 10
这会将截屏间隔设置为10秒
- 自定义保存路径:
python screenshot_program.py --save_path "C:/Screenshots"
- 添加自定义白名单:
python screenshot_program.py --white_list "QQ,钉钉,Microsoft Word"
这会将QQ、钉钉和Microsoft Word添加到默认白名单中
- 组合使用:
python screenshot_program.py --sleep 15 --save_path "C:/Screenshots" --white_list "QQ,钉钉"
当程序运行时,它会检查是否有白名单中的窗口处于打开状态。如果没有,则截取屏幕并保存;如果有,则跳过截屏,等待下一个时间间隔。
程序运行时有系统托盘图标(友好的用户使用体验)。你会在系统托盘中看到一个名为"屏幕截图服务"的图标,右键点击可以看到"暂停截屏"和"退出程序"两个选项。
本程序用到的模块/库:
- threading、time、datetime、os、argparse:这些模块是 Python 的标准库,不需要单独安装。
- 需要安装的模块有:
pystray:用于创建系统托盘图标。
Pillow(PIL):用于图像处理,代码中用于创建和操作图片。
pywin32:win32gui 和 win32con,用于调用 Windows API,例如窗口操作和屏幕捕获。
源码:
import pystray
from PIL import Image, ImageDraw
import threading
import time
import win32gui
import win32con
from PIL import ImageGrab
from datetime import datetime
import os
import argparse
# 解析命令行参数
parser = argparse.ArgumentParser(description="Screen Shot Service")
parser.add_argument("--sleep", type=int, default=5, help="截屏间隔时间 默认5秒")
parser.add_argument("--save_path", type=str, default="D:/doc/local/testPng", help="图片文件存储地址 默认D:/doc/local")
parser.add_argument("--white_list", type=str, default="", help="应用白名单 按,