# GPUSwitch **Repository Path**: baayso/GPUSwitch ## Basic Information - **Project Name**: GPUSwitch - **Description**: Forked from https://github.com/JasonHu051219/GPUSwitch - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-28 - **Last Updated**: 2026-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GPUSwitch (GPUS) - Windows 显卡切换程序 **GPUSwitch** 是一款为 Windows 10/11 用户设计的轻量级显卡首选项管理工具。它通过“进程监听 + 动态重启”的技术方案,解决了双显卡笔记本电脑显卡切换繁琐的痛点。 --- ## 🚀 项目背景 某些轻量级软件或游戏启动时自动使用独立显卡,导致性能过剩或大量发热。使用核心显卡启动时,使用独显的OBS又无法开启录屏,本程序为了解决每次启动游戏均要去设置里更改显卡设置而生,可设置为在每次启动游戏时询问使用哪种显卡。 --- ## 🌟 程序简介 **GPUSwitch** 提供了一个全局管理界面,允许你一键管理所有应用的显卡偏好,并支持在程序启动时弹窗询问,手动更改此次启动所用的显卡。 ### 核心特性: * **实时监听**:后台静默运行,秒级感知目标程序启动。 * **强力拦截**:独创“重启拦截”逻辑,确保显卡配置在程序加载渲染引擎前生效。 * **Win11 视觉**:完美契合 Windows 11 的圆角、扁平化 UI 设计,支持搜索与排序。 * **安全无害**:不劫持系统进程,不修改 HKLM 敏感注册表,无需管理员权限(普通权限即可修改 HKCU 偏好)。 --- ## 🛠️ 功能实现原理 本程序通过修改 Windows 系统原生的显卡偏好配置实现功能,采用了以下技术路径: ### 1. 进程监听 (Guard Engine) 程序利用 **WMI (Windows Management Instrumentation)** 的监听机制。 * **实现方法**:通过 `Win32_Process` 的 `Creation` 事件,实时感知系统内新进程的创建。 * **优势**:相比于死循环轮询,WMI 监听几乎不占用 CPU 资源,且响应极其迅速。 ### 2. 显卡偏好读写 (Registry Configuration) * **实现方法**:直接读写注册表路径 `HKCU\Software\Microsoft\DirectX\UserGpuPreferences`。 * **逻辑**:Windows 会在应用初始化显卡环境前读取该路径下的配置。程序通过修改 `GpuPreference` 的数值(1 为省电,2 为高性能),引导系统分配指定的 GPU 核心。 ### 3. 进程重启 (Process Restart) 为了使修改后的配置生效(解决“配置滞后”问题),程序执行以下操作序列: 1.**识别**:获取目标进程的路径与 PID。 2.**终止**:利用 `psutil` 接口安全结束目标进程。 3.**延迟**:执行短时间的阻塞等待(约 1 秒),确保系统彻底释放相关硬件句柄。 4.**重新启动**:使用 `os.startfile` 重新启动程序,触发系统重新读取已修改的显卡偏好。 ### 4. 冲突控制 (Cooldown Mechanism) * **逻辑**:引入基于时间戳的冷却字典。当程序被 GPUSwitch 重启后,10 秒内产生的同路径启动事件将被忽略,有效避免了循环弹窗与重复重启。 --- ## 🚀 快速开始 ### 环境要求 * **Python 版本**:3.12 (强烈建议,避开 3.14 等预览版的 PyInstaller 兼容性问题)。 * **依赖项**: ```bash pip install PySide6 wmi pypiwin32 psutil ``` --- ### 系统要求 * **操作系统**:仅支持 **Windows 10 (版本 1803 或更高)** 及 **Windows 11**。 * *注意:Windows 7 和 Windows 8 缺乏系统级的应用显卡首选项接口,因此无法支持。* * **硬件要求**: * 电脑需具备多显卡环境(如:核显 + 独显)。 * 台式机用户需在 BIOS 中开启 `iGPU Multi-Monitor` (或核显多显示器支持等类似选项)以确保核显处于活跃状态。 * **软件依赖**:Python 3.12 (推荐版本)。 --- ### 使用步骤 1. **克隆仓库**: ```bash git clone https://github.com/JasonHu051219/GPUSwitch.git ``` 2. **运行程序**: 直接运行 `GPUSwitch.py`,或在 `Releases` 中下载编译好的 `.exe`。 3. **添加应用**: 点击“添加新程序”,勾选“启用弹窗重启”。 4. **体验切换**: 从桌面双击你的游戏或软件,在 GPUSwitch 的询问弹窗中选择显卡,程序将自动重启并以正确显卡运行。 --- ## 🎨 UI 细节 * **搜索功能**:实时过滤列表,快速定位应用。 * **排序功能**:点击表头即可按名称或路径拼音排序。 * **状态追踪**:未保存的修改会高亮提醒,点击“应用所有更改”统一写入。 --- ## 📜 许可证 本项目基于 **MIT License** 开源。你可以自由地使用、修改和分发。