Skip to content

Repository files navigation

输入统计(InputStats)

License: MIT

Windows 11 鼠标 + 键盘输入统计工具。通过全局钩子实时记录鼠标各按键点击次数、键盘各按键按下次数与组合快捷键触发次数,支持按天统计、开机静默启动与系统托盘常驻。

功能特性

  • 鼠标全键统计:左键 / 右键 / 中键 / 侧键(前进、后退)/ 滚轮上滚 / 滚轮下滚
  • 键盘按键统计:每个按键的按下次数(按住不放的自动重复不重复计数),键盘页提供动态 104 键热力图,按键下方显示总次数、颜色随计数深浅变化
  • 组合快捷键统计:修饰键组合触发次数(如 Ctrl+C、Alt+Tab、Win+L)
  • 实时汇总:今日点击(大字置顶)、总点击、实时点击速度(次/秒)
  • 按天记录:鼠标、键盘、组合快捷键每天独立统计,数据自动持久化,重启不丢失
  • 异常双击检测:同键两次触发间隔低于 80ms 时弹窗警告(可诊断鼠标微动/驱动宏问题)
  • 开机静默启动:勾选后开机后台静默运行,不弹主窗口,托盘常驻
  • 系统托盘常驻:关闭窗口即最小化到托盘,统计持续进行;单击托盘图标打开主界面
  • 单实例保护:防止多开导致统计数据互相覆盖

使用说明

  1. Releases 下载最新的 InputStats.exe(依赖本机 .NET 8 Desktop Runtime),或按下方「构建方法」自行构建
  2. 程序自动开始统计鼠标与键盘输入
  3. 点击窗口关闭按钮(X)最小化到系统托盘,统计持续进行
  4. 单击托盘图标恢复主界面,托盘右键菜单可退出程序

静默启动

  • 命令行方式: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 开源。

About

Windows 11 鼠标 + 键盘输入统计工具(.NET 8 / WinForms,全局钩子 + 托盘常驻)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages