python 自动化 win11 编程 实现 一键 启动多个软件,QQ浏览器,snipaste,pycharm软件

python 复制代码
import time
import logging
import os
import subprocess
import winreg
from datetime import datetime

# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

# 应用程序路径
APP_PATHS = {
    'qqbrowser': r'C:\Program Files\Tencent\QQBrowser\QQBrowser.exe',
    'snipaste': r'C:\Program Files\Snipaste\Snipaste.exe',
    'pycharm': r'C:\Program Files\JetBrains\PyCharm Community Edition X.Y.Z\bin\pycharm64.exe'
}

# 备忘录文件路径
NOTEPAD_PATH = r'C:\Windows\system32\notepad.exe'
NOTES_FILE_PATH = r'C:\Users\YourUsername\Documents\notes.txt'

# 工作日志文件路径
WORKLOG_FILE_PATH = r'C:\Users\YourUsername\Documents\worklog.txt'

def launch_app(app_name):
    """启动指定的应用程序"""
    if app_name in APP_PATHS:
        app_path = APP_PATHS[app_name]
        logging.info(f"Launching {app_name}...")
        try:
            subprocess.Popen([app_path], shell=True)
            logging.info(f"{app_name} launched successfully.")
        except FileNotFoundError:
            logging.error(f"File not found: {app_path}")
        except Exception as e:
            logging.error(f"An error occurred while launching {app_name}: {e}")
    else:
        logging.error(f"Application {app_name} is not supported.")

def open_notes():
    """打开备忘录文件"""
    try:
        subprocess.Popen([NOTEPAD_PATH, NOTES_FILE_PATH])
        logging.info("Notepad opened with notes file.")
    except FileNotFoundError:
        logging.error(f"File not found: {NOTES_FILE_PATH}")
    except Exception as e:
        logging.error(f"An error occurred while opening notes: {e}")

def write_log_entry(log_file_path):
    """写入今天的日期、时间和编程记录"""
    current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    log_entry = (
        f"Date and Time: {current_time}\n"
        f"Action: 开始编程\n"
        f"Note: 今天开始进行编程工作的记录。\n\n"
    )
    try:
        with open(log_file_path, 'a') as log_file:
            log_file.write(log_entry)
        logging.info(f"Log entry written to {log_file_path}")
    except IOError as e:
        logging.error(f"Failed to write to log file: {e}")

def open_log_file():
    """打开工作日志文件,并写入今天的日期和时间"""
    try:
        subprocess.Popen([NOTEPAD_PATH, WORKLOG_FILE_PATH])
        logging.info("Notepad opened with work log file.")
        write_log_entry(WORKLOG_FILE_PATH)
    except FileNotFoundError:
        logging.error(f"File not found: {WORKLOG_FILE_PATH}")
    except Exception as e:
        logging.error(f"An error occurred while opening log file: {e}")

def launch_all_apps():
    """等待一段时间后启动所有应用程序并打开备忘录和工作日志"""
    logging.info("Waiting 30 seconds before launching applications and opening notes/log...")
    time.sleep(30)  # Wait for 30 seconds
    open_notes()
    open_log_file()
    for app_name in APP_PATHS.keys():
        launch_app(app_name)

def set_startup(exe_path):
    """设置程序开机启动"""
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
                         r'Software\Microsoft\Windows\CurrentVersion\Run', 0,
                         winreg.KEY_ALL_ACCESS)
    winreg.SetValueEx(key, "LaunchAppsAtStartup", 0, winreg.REG_SZ, exe_path)
    winreg.CloseKey(key)
    logging.info("Setup complete. Your application will now start at login.")

def main():
    # 获取当前脚本的绝对路径
    script_path = os.path.abspath(__file__)
    # 设置开机启动
    set_startup(script_path)
    # 立即启动所有应用程序、打开备忘录和工作日志(仅用于测试)
    # launch_all_apps()

if __name__ == "__main__":
    main()

改进点

  1. 代码结构:

    • 将不同功能封装到单独的函数中,提高了代码的可读性和可维护性。
  2. 日志记录:

    • 使用 logging 模块记录详细的日志信息,包括启动成功、失败和错误信息。
  3. 错误处理:

    • 增强了错误处理机制,确保在文件不存在或写入失败时能够记录错误信息。
  4. 路径变量命名:

    • 更改了工作日志文件路径变量名,使其更具描述性。
  5. 测试模式:

    • 可以通过取消注释 launch_all_apps() 来立即启动所有应用程序、打开备忘录和工作日志,用于测试。

打包 .exe 文件

使用 PyInstaller 将脚本打包成 .exe 文件:

bash 复制代码
pyinstaller --onefile --icon=your_icon.ico launch_apps.py

这将在 dist 文件夹中生成一个 .exe 文件。

测试与验证

  1. 生成 .exe 文件:

    • 确保 .exe 文件生成成功。
  2. 设置开机启动:

    • 第一次运行 .exe 文件时,会自动设置开机启动。
  3. 测试开机启动:

    • 重启计算机,等待 30 秒后检查应用程序是否自动启动,并检查备忘录和工作日志是否自动打开并写入记录。

这样,代码更加清晰、模块化,并且具有更好的错误处理机制,易于维护和扩展。

相关推荐
工业机器人视觉检测设备6 分钟前
云汇智能铝制机盖视觉检测设备落地 筑牢汽车零部件装配质量防线
自动化·视觉检测·自动化设备·检测设备
天远API15 分钟前
零信任架构实战:基于天远企业股权变更构建自动化私募股权投后控制权穿透与异动预警网关
大数据·人工智能·架构·自动化
环境栈笔记25 分钟前
浏览器多开同步怎么做?先分清设置、登录态和窗口操作
前端·人工智能·后端·自动化
weixin_4404016931 分钟前
大数据技术-数据分析(EXcel+Python数据处理+SQL)
大数据·python·数据分析·excel
甜到心里的蛋糕38 分钟前
AI 生成 MV 音频异响排查:频谱定位、片段替换与 Nginx 缓存
人工智能·python·nginx·ffmpeg·音视频·音频处理
2601_967980111 小时前
python中的静态方法和类方法
python·静态方法·类方法·实例化·方法调用
智购科技无人售货机厂家1 小时前
自动售货机物联网平台为什么会出现在线状态不一致?~YH
python·单片机·嵌入式硬件·django·pygame
飞Link9 小时前
什么是 AirSim?一文读懂无人机仿真平台
python·算法·无人机
收放扳机10 小时前
多机连线(In-Line)场景下,收放板机“缓存工位”的容量与架构选型参考
人工智能·科技·自动化·制造·pcb工艺
曲径海盗10 小时前
【Python 学习第 38 天】for 循环
python·学习笔记·编程入门