当前位置: 首页 > news >正文

Windows11桌面解锁守护脚本

使用python程序加bat一键运行脚本,妈妈再也不用担心我的电脑桌面了


import os
import time
import cv2
import pyautogui
import psutil
from datetime import datetimeclass UnlockMonitor:def __init__(self):"""初始化监控器"""self.save_dir = os.path.dirname(os.path.abspath(__file__))self.log_file = os.path.join(self.save_dir, "unlock_capture_log.txt")self.last_state = self.is_locked()self.running = Truedef log_message(self, message):"""记录日志到文件和终端"""timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")log_entry = f"[{timestamp}] {message}"print(log_entry)try:with open(self.log_file, "a", encoding="utf-8") as f:f.write(log_entry + "\n")except Exception as e:print(f"[{timestamp}] 写入日志失败: {str(e)}")def is_camera_available(self):"""检查摄像头是否可用"""try:cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)if not cap.isOpened():return Falsecap.release()return Trueexcept Exception as e:self.log_message(f"摄像头检测异常: {str(e)}")return Falsedef capture_camera(self):"""直接拍照(不对图像做任何处理)"""timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")camera_path = os.path.join(self.save_dir, f"camera_{timestamp}.jpg")try:cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)# 基本摄像头设置cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)cap.set(cv2.CAP_PROP_AUTOFOCUS, 1)  # 启用自动对焦# 等待摄像头对焦(2秒)time.sleep(2)if not cap.isOpened():self.log_message("无法打开摄像头")return# 直接拍摄单帧ret, frame = cap.read()cap.release()if ret:cv2.imwrite(camera_path, frame)self.log_message(f"拍照保存至: {camera_path}")else:self.log_message("摄像头读取失败")except Exception as e:self.log_message(f"拍照异常: {str(e)}")def capture_screenshot(self):"""截屏"""timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")screenshot_path = os.path.join(self.save_dir, f"screenshot_{timestamp}.png")try:screenshot = pyautogui.screenshot()screenshot.save(screenshot_path)self.log_message(f"截屏保存至: {screenshot_path}")except Exception as e:self.log_message(f"截屏失败: {str(e)}")def is_already_running(self):"""检查是否已有相同进程在运行"""current_pid = os.getpid()script_name = os.path.basename(__file__)for proc in psutil.process_iter(['pid', 'name', 'cmdline']):try:if (proc.info['pid'] != current_pid and proc.info['cmdline'] and script_name in ' '.join(proc.info['cmdline'])):return Trueexcept (psutil.NoSuchProcess, psutil.AccessDenied, KeyError):continuereturn Falsedef is_locked(self):"""检查系统是否处于锁定状态"""try:for proc in psutil.process_iter(['name']):if proc.info['name'] == 'LogonUI.exe':return Truereturn Falseexcept Exception:return Falsedef run(self):"""主监控循环"""if self.is_already_running():self.log_message("已有实例运行,退出当前进程")returnself.log_message("===== 解锁监控服务启动 =====")self.log_message(f"初始状态: {'锁定' if self.last_state else '解锁'}")try:while self.running:current_state = self.is_locked()# 检测解锁事件if self.last_state and not current_state:self.log_message("检测到解锁事件,开始捕获...")if self.is_camera_available():self.capture_camera()self.capture_screenshot()self.last_state = current_statetime.sleep(1)  # 检测间隔except KeyboardInterrupt:self.log_message("服务被用户中断")except Exception as e:self.log_message(f"服务异常: {str(e)}")finally:self.log_message("===== 监控服务停止 =====")if __name__ == '__main__':monitor = UnlockMonitor()monitor.run()

@echo off
chcp 65001 > nul
title 解锁拍照监控服务
color 0A:: 设置循环标志
set RESTART_COUNT=0:restart
echo 正在启动解锁拍照监控服务... (第%RESTART_COUNT%次启动)
echo 按 Ctrl+C 停止服务:: 设置Python路径(根据您的环境修改)
set PYTHON_PATH="C:\Users\lhyyds\.conda\envs\hust\python.exe":: 设置脚本路径
set SCRIPT_PATH="%~dp0wake_monitor.py":: 启动Python脚本
%PYTHON_PATH% %SCRIPT_PATH%:: 检查是否需要重启
set /a RESTART_COUNT+=1
echo 服务意外停止,5秒后自动重启...
timeout /t 5 /nobreak >nul
goto restartecho 服务已手动停止
pause
http://www.dtcms.com/a/275058.html

相关文章:

  • 05 唤醒词检测:让语音助手随时待命
  • 【跟着PMP学习项目管理】每日一练 - 3
  • 游戏gm系统
  • Kamailio 5.8.3与rtpengine双网卡SBC集成要点
  • TCP服务器与客户端三种方法实现
  • SHA-256算法流程分析与演示——github工程完善
  • 网络安全基础作业
  • 连锁门店如何统一固定资产盘点?总部+门店协同攻略
  • 佳能(Canon)摄像机存储卡提示格式化的恢复方法
  • 七月份了,考研数学该怎么复习?
  • AD736ARZ-R7精密真有效值转换器 高精度测量的首选方案
  • Telegraf vs. Logstash:实时数据处理架构中的关键组件对比
  • 网络编程(基本概念)
  • Maven下载与配置对Java项目的理解
  • TensorFlow2 study notes[1]
  • 9.卷积神经网络操作
  • 【网络编程】KCP——可靠的 UDP 传输协议——的知识汇总
  • 公链的主要特征有哪些?
  • 【Docker#1】技术架构演进之路
  • Script Error产生的原因及解法
  • 新品上架后,亚马逊卖家如何高效投放广告
  • 自信的本质:在克服逆境的过程中爱上自己
  • 四、神经网络——正则化方法
  • Operation Blackout 2025 Phantom Check hayabusa+ControlSet001+VirtualBox
  • 【笔记】训练步骤代码解析
  • docker安装Consul笔记
  • Java(7.11 设计模式学习)
  • PLC框架-1.3- 汇川PN伺服(3号报文)
  • 多种人脸处理方案——人脸裁剪
  • Webview 中可用的 VS Code 方法