Skip to content
bmoqingPublic

About

Windows 多屏鼠标锁定工具,支持前台应用绑定、鼠标侧键快捷键、跨屏跳转与窗口跨屏拖动。

Resources

Stars

5 stars

Watchers

0 watching

Forks

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🇺🇸 English | 🇨🇳 中文

MouseLock

MouseLock

一款专为多屏幕用户设计的鼠标锁定工具。它可以将鼠标限制在当前使用的屏幕范围内,避免在激烈游戏、演示汇报或精细绘图过程中,鼠标意外滑到其他屏幕造成误操作或窗口失焦。

核心功能

  • 智能锁定:将鼠标光标锁定在当前屏幕,防止意外滑出。
  • 中心锁定:可选将鼠标固定在当前屏幕的几何中心,并根据每台显示器的实际分辨率自动计算中心点。
  • 前台绑定:从统一的应用列表选择目标程序;列表按可执行文件路径去重,绑定后匹配该应用的全部窗口,目标应用位于前台时,鼠标自动锁定到该应用所在的屏幕。
  • 快捷键控制:可用快捷键切换锁定状态,也可长按临时解锁、松开后自动恢复。
  • 快速跳转:一键在相邻屏幕间跳转,并将锁定自动转移到目标屏幕;快捷键支持键盘按键和鼠标侧键 4、5。
  • 跨屏拖动:绑定窗口移动到另一块屏幕时自动切换锁定区域,不会被旧屏幕边界卡住。
  • 强力防失效:通过系统事件钩子(SetWinEventHook)与定时校验,确保锁定状态不被其他程序清除。
  • 低占用:原生 Win32 实现,无 .NET/CLR 依赖,内存占用极低。
  • 高兼容性:基于 Win32 API(ClipCursor / SetWinEventHook / 低级键盘钩子),支持任意多屏排列。

默认快捷键

功能 默认快捷键
启用/停用鼠标锁定 Ctrl + Alt + L
临时解锁(长按) Ctrl
跳转到上一屏幕 Ctrl + Alt + ←
跳转到下一屏幕 Ctrl + Alt + →

程序启动时默认不锁定鼠标。四个快捷键均可在「设置」中自定义。输入框支持键盘按键、鼠标侧键 4、5、修饰键组合;右侧提供「恢复默认」和「清空(不启用)」两个按钮。快捷键亦可留空表示不启用。设置修改实时保存并立即生效,无需额外确认。

使用方法

  1. 下载并运行 MouseLock.exe(需以管理员权限运行,程序自带 UAC 清单提权)。
  2. 在主设置窗口勾选「启用鼠标锁定」即可生效;显示托盘图标时,关闭主窗口只会隐藏窗口;隐藏托盘图标时,关闭主窗口会退出程序。
  3. 托盘图标显示时,右键可启用/停用锁定、在屏幕间跳转、打开设置主窗口或退出。「绑定设置」和「设置」都会打开同一个窗口。
  4. 在「设置」中可配置:
    • 四个快捷键;
    • 「将鼠标锁定到当前屏幕正中间」;
    • 「仅当前绑定应用程序在前台时锁定」;从「绑定应用」列表多选程序。窗口和进程按应用程序路径统一绑定,该应用的所有窗口都会生效;
    • 应用列表支持搜索,默认只显示有可见窗口的程序;可打开「显示无可见窗口的后台应用」查找后台程序;使用「绑定选中项」明确提交绑定。
    • 「启动时静默启动到托盘」(启动时不显示主窗口);
    • 「隐藏系统托盘图标」;隐藏后再次运行 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

About

Windows 多屏鼠标锁定工具,支持前台应用绑定、鼠标侧键快捷键、跨屏跳转与窗口跨屏拖动。

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages