一款轻量级 Windows 显示器 DDC/CI 控制工具,提供图形化操作界面,支持手动/自动调节显示器亮度与对比度、枚举显示器 VCP Capabilities、高级 VCP 读写、基于全局快捷键的快捷命令,以及供外部自动化调用的 CLI / HTTP API
GitHub: https://github.com/DreamNya/DDC-Monitor-Controller
- 轻量级后台运行
- 常驻内存约 20 MB
- WebView UI 按需创建,关闭窗口后立即销毁
- 通过系统托盘快速唤醒操作界面
- 提供
快速设置和详细设置两种交互面板 - 可直接从托盘菜单切换亮色 / 暗色主题
- 提供
- 支持多显示器控制
- 可自由切换当前控制的显示器
- 支持调节显示器亮度和对比度
- 高级 VCP 快捷命令可绑定并控制单台显示器或显示器组内所有显示器
- 支持自动调节模式
- 可自由添加和删除时间节点
- 可为不同时间节点设置亮度和对比度
- 支持创建多套自动设置方案并随时切换
- 可配置自动模式运行间隔和目标显示器
- 支持 VCP Capabilities 枚举
- 读取选中显示器的 DDC/CI Capabilities String
- 自动解析
vcp(...)中声明的 VCP Code 及离散支持值 - 支持批量读取已枚举 VCP 的当前值
- 提供格式化后的 Raw Capabilities 查看区域
- 支持高级 VCP 操作
- 提供亮度/对比度相对百分比调节
- 提供亮度/对比度绝对值写入
- 支持切换输入源和电源模式
- 支持自定义读取或写入任意
0x00 ~ 0xFFVCP Code
- 支持高级 VCP 快捷命令
- 可将高级 VCP 操作保存为按显示器或显示器组分组的快捷命令
- 支持为快捷命令配置系统级全局快捷键
- 界面设置
- 支持亮色 / 暗色主题
- 支持设置开机自启动
- 支持分别调整快速设置与详细设置面板缩放比例
- 支持调整默认文字大小
▲ 快速设置界面
▲ 详细设置界面
▲ 详细设置-高级VCP界面
- 自动获取日出、日落时间,并作为方案的初始和末尾时间节点
- 时间节点之间的非线性变化
- Windows x64
- 显示器支持并已开启 DDC/CI
- Microsoft Edge WebView2 Runtime
- Node.js >= v24(可选,Portable Release 已附带 Node.js Runtime,无需单独安装)
不同品牌和型号的显示器对 DDC/CI / MCCS 的支持程度可能存在差异;部分显示器需要在 OSD 菜单中手动开启 DDC/CI
下载编译后的文件
- GitHub Release
https://github.com/DreamNya/DDC-Monitor-Controller/releases
- 蓝奏云分流
https://wwbwh.lanzouw.com/b01d75e9of
密码:4zwx
| 版本 | 是否包含 Node.js Runtime | 适用场景 |
|---|---|---|
| portable | 是 | 文件体积较大,无需额外安装 Node.js 运行时 |
| noRuntime | 否 | 文件体积较小,仅包含必要文件 |
*不同版本仅影响解压后的文件体积,不影响实际内存占用
所有版本均不包含 WebView2 Runtime,如果系统中不存在,建议安装 Microsoft Edge 或单独安装 WebView2 Runtime
双击 DDCMonitorController.exe 即可启动程序,并常驻系统托盘
(详细设置面板-设置界面可配置开机自动启动)
程序入口说明
DDCMonitorController.exe:仅用于启动图形界面,不支持 CLI 参数调用DDCMonitorController-CLI.exe:仅用于 CLI 参数调用,不作为图形界面启动入口
- 默认情况下,CLI 命令执行后会同时启动主程序
- 使用
--silent参数时,仅执行 CLI 操作,不启动主程序
- 左键单击托盘图标,打开快速设置面板
- 拖动滑块,调节当前显示器的亮度和对比度
- 点击显示器名称,切换到其他显示器
- 可从快速设置面板进入详细设置
右键单击托盘图标,可打开快捷菜单,进入快速设置或详细设置,并可直接切换亮色 / 暗色主题
详细设置面板通过侧边栏提供 控制面板、设置、外部 API、枚举 VCP、高级 VCP 等功能
- 调节自动模式运行间隔
- 开启或关闭自动调节
- 创建、删除、重命名和切换自动设置方案
- 添加或删除时间节点
- 设置各时间节点的亮度和对比度
- 选择自动调节的目标显示器
- 拖动标题栏改变窗口位置
- 拖动窗口边缘改变窗口大小
目前时间节点暂不支持手动排序;保存方案后,程序会按照时间自动排序
- 选择需要检查的显示器
- 点击
枚举 VCP,读取显示器 Capabilities - 程序会解析显示器声明支持的 VCP Code 和离散值,并显示在表格中
- 点击
读取 VCP,批量读取当前已枚举 VCP 的当前值 - 点击任意表格单元格可将内容复制到剪贴板
- 展开
Raw Capabilities可查看格式化后的原始 Capabilities String
Capabilities 中声明某个 VCP Code,并不一定代表该 Code 可以通过标准
Get VCP Feature正常读取;部分厂商私有 VCP 或固件实现不完整的功能可能返回“不支持”或其他 DDC/CI 错误
高级 VCP 面板允许先选择一台具体显示器或一个显示器组,再执行以下操作:
- 预设功能
- 亮度 / 对比度增加或减少指定百分比
- 默认 VCP Code:亮度
0x10、对比度0x12 - 百分比调节会根据显示器返回的
maximum计算步长 - 最终写入值限制在
0 ~ maximum - 即使当前值已经处于
0或maximum,再次执行仍会发送一次 VCP 写入
- 默认 VCP Code:亮度
- 亮度 / 对比度写入指定数值
- 切换输入源(默认 VCP Code
0x60) - 切换电源模式(默认 VCP Code
0xD6) - 所有预设 VCP Code 均可由用户自行修改
- 亮度 / 对比度增加或减少指定百分比
- RAW VCP
- 支持输入任意 VCP Code 进行读取
- 支持输入任意 VCP Code 和 Value 进行写入
- 除相对百分比调节外,程序不会根据显示器型号对用户填写的 Value 进行范围兜底或自动修正
高级 VCP 操作可以保存为快捷命令:
- 快捷命令绑定保存时选中的具体显示器或显示器组(快捷命令可对显示器组中所有显示器生效)
- 使用
edid|显示器名称|产品代码|序列号识别设备;无法读取的字段记为NULL,可读取序列号时在名称后显示序列号 - 多台显示器生成相同标识时,无法安全地单独控制或运行绑定到该标识的快捷命令;仅剩一台时也无法保证与之前绑定的是同一台
- 命令列表按显示器或显示器组分组展示
- 目标显示器离线时,快捷命令跳过执行
- 可为快捷命令配置可选的系统级全局快捷键
- 全局快捷键通过 Win32
RegisterHotKey注册,因此 Control Panel / WebView 已关闭时仍然有效 - 默认不允许快捷键重复,如果重复会提示占用该组合键的快捷命令
- 可选开关强制允许重复快捷键,按下后会依次执行所有使用该快捷键的命令
- 如果快捷键已被 Windows 或其他应用注册,系统只能返回“快捷键已被占用”,无法可靠获知具体外部占用程序
- 切换亮色 / 暗色主题
- 设置程序开机自启动
- 修改快速设置面板缩放比例
- 修改详细设置面板缩放比例
- 修改默认文字大小
- 查看或打开日志目录等程序设置
程序提供本地 HTTP 与 CLI 两种外部调用方式,两者共用同一套 Public API:
- HTTP API 默认关闭,可在本页手动开启并配置监听端口
- 固定监听
127.0.0.1,不会监听局域网地址 - 当前不进行额外鉴权;启用后,任何本机程序均可向该端口发送请求
- 仅接受
POST+ JSON Body - 支持跨域调用,可用于用户脚本 / 油猴脚本等本机自动化场景
- 固定监听
- CLI API 始终可用,不受 HTTP API 开关影响
- 可通过
DDCMonitorController-CLI.exe的命令行参数调用(开发环境可通过node index.mjs --args xxx调用) - 不使用
--silent时,如果已有程序实例,请求会转发给现有实例执行;如果没有实例,程序会正常启动并在执行后继续常驻 - 使用
--silent时,仅允许在当前没有运行实例时执行;程序以无界面模式完成任务后立即退出
- 可通过
- 批量命令会按照请求中的顺序逐条等待执行
- 任一任务运行失败后,后续任务不再执行
- 已经成功执行的任务不会自动回滚
可用 API、参数定义以及 curl / fetch / CLI 调用示例会随程序版本同步展示在 详细设置 → 外部 API 页面,请以该页面为准
配置文件和 WebView 数据目录:
%LOCALAPPDATA%\DDCMonitorController
高级 VCP 快捷命令、全局快捷键以及 HTTP API 开关 / 监听端口等配置会随程序设置一并持久化保存
日志文件:
日志文件保存在程序所在目录 log 文件夹中
- Node.js
- TypeScript
- WebView2
- DDC/CI / MCCS
- Windows Native DLL / Node-API Addon
本项目采用 C++ Native 能力层 + TypeScript 业务层 + WebView2 Renderer UI 的结构
- C++ 负责 Windows / 硬件相关的底层能力
- 物理显示器枚举与 DDC/CI VCP 读写
- Capabilities String 获取
- WebView2 / Win32 窗口能力
- 系统级全局快捷键注册
- TypeScript 负责应用业务逻辑与状态管理
- 显示器状态缓存与自动调节
- Capabilities / VCP 数据解析
- 高级 VCP 命令与快捷命令管理
- Public API、CLI / HTTP 传输层、前后端 RPC 和配置持久化
- HTML / CSS / TypeScript Renderer 负责界面展示与用户交互
各层通过明确的 Native Addon / WebMessage RPC 边界通信,避免业务逻辑与桥接逻辑耦合
native/
├─ Launcher/ Windows 启动器
├─ WebViewNative/ WebView2 / Win32 / 全局快捷键桥接层
└─ MonitorNative/ DDC/CI VCP / Capabilities 桥接层
src/
├─ api/ Public API、CLI / HTTP 调用与外部自动化协议层
├─ main/ Node.js 后端业务层
├─ renderer/ WebView2 前端 UI
└─ shared/ 前后端共享类型、模型、VCP 工具与 RPC 契约
git clone https://github.com/DreamNya/ddc-monitor-controller.git
cd ddc-monitor-controllernpm installnpm run checknpm run build:native支持前端热重载
npm run dev不包含 Node.js Runtime:
npm run build包含 Node.js Runtime:
npm run portable本项目基于 MIT License 开源


