将鼠标光标锁定在主显示器范围内的 Windows 系统托盘工具,同时提供 DDC/CI 显示器控制功能。
- 鼠标锁定 — 一键将光标限制在主屏幕区域,防止跨屏误操作
- 全局快捷键 — 默认
Ctrl+Alt+L切换锁定/解锁,可在设置中自定义 - DDC/CI 显示器控制 — 通过右键菜单或设置对话框:
- 关闭/开启显示器电源
- 切换视频输入源(HDMI、DisplayPort 等)
- 调节亮度和对比度
- 右键菜单可配置 — 可单独开关电源控制和输入源切换菜单项
- 自定义显示器名称 — 编辑显示器名称并持久化到注册表
- 锁定状态持久化 — 重启后自动恢复上次的锁定状态
- 屏幕中央提示 — 切换时显示锁定/解锁状态浮窗
- 单实例运行 — 防止重复启动
依赖 MinGW UCRT64 工具链:
g++ -o MonitorTether.exe 鼠标锁定.cpp resource.res -ldxva2 -lcomctl32 -mwindows -static资源文件编译(修改图标后需要重新编译):
windres resource.rc -O coff -o resource.res- 运行
MonitorTether.exe,系统托盘出现图标 - 左键点击托盘图标 — 切换鼠标锁定
- 右键点击托盘图标 — 打开菜单
- 解除锁定 / 开启锁定
- 显示器控制(每个显示器独立子菜单)
- 设置
- 退出
- 快捷键 — 默认
Ctrl+Alt+L,可在设置中修改
| 功能 | 实现方式 |
|---|---|
| 鼠标锁定 | ClipCursor() + 看门狗定时器 |
| 显示器枚举 | EnumDisplayMonitors + GetPhysicalMonitorsFromHMONITOR |
| DDC/CI 控制 | 动态加载 dxva2.dll,VCP 指令 0xD6/0x60/0x10/0x12 |
| 系统托盘 | Shell_NotifyIconW + 自定义窗口消息 |
| 设置持久化 | Windows 注册表 HKCU\Software\MouseLock |
| 快捷键 | RegisterHotKey / UnregisterHotKey |
| 单实例 | 命名互斥体 MouseLock_SingleInstance |
├── 鼠标锁定.cpp # 主程序源码
├── resource.h # 资源 ID 定义
├── resource.rc # 资源脚本(图标嵌入)
├── app-padlock-mouse.ico # 应用图标(绿底白锁)
├── tray-padlock-on.ico # 托盘图标-锁定状态(红色)
├── tray-padlock-off.ico # 托盘图标-解锁状态(绿色)
├── convert_svg_to_ico.py # Pillow 图标生成脚本
└── 参考文件/
└── 鼠标锁定.pyw # Python 参考实现
- Windows 10 或更高版本
- 支持 DDC/CI 的显示器(非必需,仅控制功能需要)