一款专为多屏幕用户设计的鼠标锁定工具。它可以将鼠标限制在当前使用的屏幕范围内,避免在激烈游戏、演示汇报或精细绘图过程中,鼠标意外滑到其他屏幕造成误操作或窗口失焦。
- 智能锁定:将鼠标光标锁定在当前屏幕,防止意外滑出。
- 中心锁定:可选将鼠标固定在当前屏幕的几何中心,并根据每台显示器的实际分辨率自动计算中心点。
- 前台绑定:从统一的应用列表选择目标程序;列表按可执行文件路径去重,绑定后匹配该应用的全部窗口,目标应用位于前台时,鼠标自动锁定到该应用所在的屏幕。
- 快捷键控制:可用快捷键切换锁定状态,也可长按临时解锁、松开后自动恢复。
- 快速跳转:一键在相邻屏幕间跳转,并将锁定自动转移到目标屏幕;快捷键支持键盘按键和鼠标侧键 4、5。
- 跨屏拖动:绑定窗口移动到另一块屏幕时自动切换锁定区域,不会被旧屏幕边界卡住。
- 强力防失效:通过系统事件钩子(
SetWinEventHook)与定时校验,确保锁定状态不被其他程序清除。 - 低占用:原生 Win32 实现,无 .NET/CLR 依赖,内存占用极低。
- 高兼容性:基于 Win32 API(
ClipCursor/SetWinEventHook/ 低级键盘钩子),支持任意多屏排列。
| 功能 | 默认快捷键 |
|---|---|
| 启用/停用鼠标锁定 | Ctrl + Alt + L |
| 临时解锁(长按) | Ctrl |
| 跳转到上一屏幕 | Ctrl + Alt + ← |
| 跳转到下一屏幕 | Ctrl + Alt + → |
程序启动时默认不锁定鼠标。四个快捷键均可在「设置」中自定义。输入框支持键盘按键、鼠标侧键 4、5、修饰键组合;右侧提供「恢复默认」和「清空(不启用)」两个按钮。快捷键亦可留空表示不启用。设置修改实时保存并立即生效,无需额外确认。
- 下载并运行
MouseLock.exe(需以管理员权限运行,程序自带 UAC 清单提权)。 - 在主设置窗口勾选「启用鼠标锁定」即可生效;显示托盘图标时,关闭主窗口只会隐藏窗口;隐藏托盘图标时,关闭主窗口会退出程序。
- 托盘图标显示时,右键可启用/停用锁定、在屏幕间跳转、打开设置主窗口或退出。「绑定设置」和「设置」都会打开同一个窗口。
- 在「设置」中可配置:
- 四个快捷键;
- 「将鼠标锁定到当前屏幕正中间」;
- 「仅当前绑定应用程序在前台时锁定」;从「绑定应用」列表多选程序。窗口和进程按应用程序路径统一绑定,该应用的所有窗口都会生效;
- 应用列表支持搜索,默认只显示有可见窗口的程序;可打开「显示无可见窗口的后台应用」查找后台程序;使用「绑定选中项」明确提交绑定。
- 「启动时静默启动到托盘」(启动时不显示主窗口);
- 「隐藏系统托盘图标」;隐藏后再次运行
MouseLock.exe可重新显示设置主窗口。 - 「开机自动启动」(创建计划任务,登录时以最高权限静默启动)。
程序配置文件和日志默认保存在 %LOCALAPPDATA%\MouseLock,与 exe 安装目录分开。首次启动时会迁移 exe 同目录下已有的 config.json。如果用户数据目录不可用,程序会回退到 exe 目录;日志无法写入时还会尝试临时目录。
环境要求:Windows 10/11 + Visual Studio Build Tools(含 C++ 工具链、Windows SDK 和资源编译器 rc.exe)。
cd native
build_vs18.bat生成的 native\MouseLock.exe 即单文件可执行程序;程序通过 app.manifest 请求管理员权限运行。
- 鼠标锁定:
ClipCursor限定光标活动范围;SetWinEventHook监听焦点 / 桌面切换等事件,配合定时器在锁定失效时自动重新裁剪。 - 中心锁定:开启后使用当前显示器矩形的中心坐标,将光标限制在中心的 1×1 像素区域;多屏跳转时自动重新计算目标屏幕中心。
- 前台绑定:通过
EVENT_SYSTEM_FOREGROUND获取前台窗口,按应用程序路径匹配绑定目标,再用MonitorFromWindow确定其所在显示器;窗口移动开始时解除旧裁剪,移动结束后重新锁定。 - 快捷键:
WH_KEYBOARD_LL和WH_MOUSE_LL低级钩子捕获键盘及鼠标侧键组合;「临时解锁」为长按式,松开即恢复锁定。 - 多屏跳转:
EnumDisplayMonitors枚举显示器并按物理坐标排序,SetCursorPos将光标移动到目标屏幕中心。 - 配置管理:JSON 配置文件,手写轻量解析/序列化,改动实时保存。
- 单实例:使用命名互斥量(Mutex)保证同一时间只运行一个实例。
- 开机自启:通过按用户 SID 隔离的 Windows 计划任务(登录触发 + 最高权限 + 交互式)实现,可静默提权;启动时会自动校验并修复任务。
- 日志诊断:日志使用 UTF-8 编码,记录启动环境、钩子安装、锁定状态和计划任务操作,默认写入
%LOCALAPPDATA%\MouseLock\MouseLock.log。
MouseLock/
└── native/ # C++/Win32 源码
├── main.cpp # 入口、托盘、钩子、主窗口
├── locker.cpp/h # 鼠标锁定核心逻辑
├── settings.cpp/h # 设置窗口
├── config.cpp/h # JSON 配置读写与快捷键格式化
├── resources.rc # 资源脚本(图标、应用清单)
├── resource.h # 资源 ID
├── app.manifest # 应用清单(请求管理员权限)
├── MouseLock.ico/png # 图标资源
└── build_vs18.bat # Visual Studio Build Tools 一键编译脚本
MIT License