Skip to content

JasonHu051219/GPUSwitch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

GPUSwitch (GPUS) - Windows 显卡切换程序

GPUSwitch 是一款为 Windows 10/11 用户设计的轻量级显卡首选项管理工具。它通过“进程监听 + 动态重启”的技术方案,解决了双显卡笔记本电脑显卡切换繁琐的痛点。


🚀 项目背景

某些轻量级软件或游戏启动时自动使用独立显卡,导致性能过剩或大量发热。使用核心显卡启动时,使用独显的OBS又无法开启录屏,本程序为了解决每次启动游戏均要去设置里更改显卡设置而生,可设置为在每次启动游戏时询问使用哪种显卡。


🌟 程序简介

GPUSwitch 提供了一个全局管理界面,允许你一键管理所有应用的显卡偏好,并支持在程序启动时弹窗询问,手动更改此次启动所用的显卡。

核心特性:

  • 实时监听:后台静默运行,秒级感知目标程序启动。
  • 强力拦截:独创“重启拦截”逻辑,确保显卡配置在程序加载渲染引擎前生效。
  • Win11 视觉:完美契合 Windows 11 的圆角、扁平化 UI 设计,支持搜索与排序。
  • 安全无害:不劫持系统进程,不修改 HKLM 敏感注册表,无需管理员权限(普通权限即可修改 HKCU 偏好)。

🛠️ 功能实现原理

本程序弃用了传统的 IFEO (Image File Execution Options) 劫持方案,采用了更稳定的组合技术栈:

1. 进程监听 (Guard Engine)

程序利用 WMI (Windows Management Instrumentation) 的事件订阅机制。

  • 实现方法:通过 Win32_ProcessCreation 事件监听系统进程树的变化。
  • 优势:相比于死循环轮询,WMI 监听几乎不占用 CPU 资源,且响应极其迅速。

2. 显卡偏好注入 (Registry Injection)

  • 实现方法:直接读写注册表路径 HKCU\Software\Microsoft\DirectX\UserGpuPreferences
  • 逻辑:Windows 会在应用初始化 DirectX 或 Vulkan 环境前读取该键值。通过在此处写入 GpuPreference=2;(高性能)或 1;(省电),引导系统分配正确的 GPU 核心。

3. 原子化重启 (Atomic Restart)

为了解决“程序已启动,修改注册表太晚”的问题,程序执行以下原子操作:

  1. 识别:获取目标进程的 PID。
  2. 终结:利用 psutilkill() 方法强制结束进程。
  3. 冷却:执行 1 秒的阻塞式等待 (time.sleep),确保操作系统彻底释放文件锁和驱动句柄。
  4. 拉起:使用 os.startfile 重新启动程序,此时程序会读取到刚刚写入的新显卡配置。

4. 智能防循环 (Cooldown Mechanism)

  • 逻辑:引入基于时间戳的冷却字典。当程序被 GPUSwitch 重启后,其产生的第二次启动事件会被冷却逻辑(默认 10 秒)拦截,从而避免出现无限弹窗循环。

🚀 快速开始

环境要求

  • Python 版本:3.12 (强烈建议,避开 3.14 等预览版的 PyInstaller 兼容性问题)。
  • 依赖项
pip install PySide6 wmi pypiwin32 psutil

系统要求

  • 操作系统:仅支持 Windows 10 (版本 1803 或更高)Windows 11

  • 注意:Windows 7 和 Windows 8 缺乏系统级的应用显卡首选项接口,因此无法支持。

  • 硬件要求

  • 电脑需具备多显卡环境(如:核显 + 独显)。

  • 台式机用户需在 BIOS 中开启 iGPU Multi-Monitor (或核显多显示器支持等类似选项)以确保核显处于活跃状态。

  • 软件依赖:Python 3.12 (推荐版本)。


使用步骤

  1. 克隆仓库
git clone https://github.com/JasonHu051219/GPUSwitch.git
  1. 运行程序: 直接运行 GPUSwitch.py,或在 Releases 中下载编译好的 .exe
  2. 添加应用: 点击“添加新程序”,勾选“启用弹窗重启”。
  3. 体验切换: 从桌面双击你的游戏或软件,在 GPUSwitch 的询问弹窗中选择显卡,程序将自动重启并以正确显卡运行。

🎨 UI 细节

  • 搜索功能:实时过滤列表,快速定位应用。
  • 排序功能:点击表头即可按名称或路径拼音排序。
  • 状态追踪:未保存的修改会高亮提醒,点击“应用所有更改”统一写入。

📜 许可证

本项目基于 MIT License 开源。你可以自由地使用、修改和分发。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages