Windows 11 鼠标 + 键盘输入统计工具。通过全局钩子实时记录鼠标各按键点击次数、键盘各按键按下次数与组合快捷键触发次数,支持按天统计、开机静默启动与系统托盘常驻。
- 鼠标全键统计:左键 / 右键 / 中键 / 侧键(前进、后退)/ 滚轮上滚 / 滚轮下滚
- 键盘按键统计:每个按键的按下次数(按住不放的自动重复不重复计数),键盘页提供动态 104 键热力图,按键下方显示总次数、颜色随计数深浅变化
- 组合快捷键统计:修饰键组合触发次数(如 Ctrl+C、Alt+Tab、Win+L)
- 实时汇总:今日点击(大字置顶)、总点击、实时点击速度(次/秒)
- 按天记录:鼠标、键盘、组合快捷键每天独立统计,数据自动持久化,重启不丢失
- 异常双击检测:同键两次触发间隔低于 80ms 时弹窗警告(可诊断鼠标微动/驱动宏问题)
- 开机静默启动:勾选后开机后台静默运行,不弹主窗口,托盘常驻
- 系统托盘常驻:关闭窗口即最小化到托盘,统计持续进行;单击托盘图标打开主界面
- 单实例保护:防止多开导致统计数据互相覆盖
- 从 Releases 下载最新的
InputStats.exe(依赖本机 .NET 8 Desktop Runtime),或按下方「构建方法」自行构建 - 程序自动开始统计鼠标与键盘输入
- 点击窗口关闭按钮(X)最小化到系统托盘,统计持续进行
- 单击托盘图标恢复主界面,托盘右键菜单可退出程序
- 命令行方式:
InputStats.exe --silent(不显示主窗口,后台运行) - 界面勾选「开机自动启动」后,开机自启会自动带
--silent参数静默运行
统计数据保存在 exe 同目录下的 stats.json,每 10 秒自动落盘,退出时立即保存。界面点击「打开数据文件」可直接定位查看。
文件格式:
{
"Total": { "Left": 1024, "Right": 512 },
"Daily": { "2026-08-24": { "Left": 320 } },
"Keyboard": { "A": 88, "Ctrl": 45, "Enter": 12 },
"KeyboardDaily": { "2026-08-24": { "A": 20 } },
"Shortcuts": { "Ctrl+C": 32, "Alt+Tab": 5 },
"ShortcutDaily": { "2026-08-24": { "Ctrl+C": 8 } }
}注意:删除
stats.json即清空所有历史统计,请谨慎操作。
程序设置(如按键明细日志开关)保存在同目录 settings.json。
程序运行时会向 exe 同目录写入 app.log,记录:
- 启动模式(普通 / 静默)
- 鼠标 / 键盘钩子安装成功或失败
- 每个按键的按下和弹起时间戳(精确到毫秒)——默认关闭,主界面勾选「记录按键明细日志(排查用)」后开启
- 异常双击警告
- 数据自动保存(每 10 秒)
- 程序退出
- 全局未捕获异常(含堆栈)
按键明细日志默认关闭的原因:时间戳按键流水隐私敏感(输入密码等场景也会被记录);且钩子回调内同步写磁盘,若被慢盘/杀软拖慢,系统可能静默摘除钩子导致统计失效。仅在排查"键盘事件是否被钩子捕获"等问题时临时开启。
超过 1MB 自动滚动为 app.log.old,仅保留最近一份旧日志。按键时间戳对排查"键盘事件是否按预期被钩子捕获"特别有用——只需对照 app.log 的时间线与 stats.json 计数即可。
- .NET 8 / WinForms(C#)
- Win32 API:
WH_MOUSE_LL鼠标钩子、WH_KEYBOARD_LL键盘钩子 - 数据持久化:System.Text.Json
# 需安装 .NET 8 SDK
dotnet publish -c Release -r win-x64 --self-contained false \
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o publish构建产物为单文件 publish/InputStats.exe,依赖本机 .NET 8 Desktop Runtime。
MouseClickCounter/
├── Program.cs # 入口,单实例保护,--silent 静默参数
├── MainForm.cs # 主界面(Tab 三页)、托盘、开机自启、异常双击检测
├── MouseHook.cs # 全局低级鼠标钩子
├── KeyboardHook.cs # 全局低级键盘钩子 + 按键名映射
├── KeyboardHeatmap.cs # 104 键热力图布局与自绘面板
├── ClickStats.cs # 统计模型与 JSON 持久化
├── Logger.cs # app.log 滚动日志(1MB 轮转,按键明细默认关闭)
├── Settings.cs # 应用设置(settings.json)
├── tests/ # MouseSimTest 输入注入模拟器 / InputStats.Tests 单元测试
└── CHANGELOG.md # 变更日志
各版本变更记录见 CHANGELOG.md。
本项目基于 MIT License 开源。