ActivityMonitor 是我开发的 Windows 应用使用统计工具,以原生插件的形式集成到 TrafficMonitor 中。它通过前台应用和空闲状态记录电脑使用情况,让日常使用、工作与专注时间可以直接在宿主显示项中查看,也能打开独立面板回顾时间分布。
核心功能
| 模块 | 功能 |
|---|---|
| 实时显示 | 在 TrafficMonitor 中展示今日使用、当前应用、专注时间和工作时间 |
| Overview | 查看当天统计卡片、使用时间线、应用排行和分类分布 |
| Apps | 按应用查看使用时长排行 |
| Insights | 回顾近七日趋势、应用切换次数等统计 |
| Settings | 调整空闲阈值、应用分类规则、窗口标题记录,以及跟随系统、浅色和深色主题 |
| 本地记录 | 支持跨午夜统计、锁屏及睡眠通知处理、定期保存和异常退出恢复 |
统计口径
插件只累计非空闲状态下的前台应用使用时间,后台运行的软件不会单独计时。默认连续 5 分钟没有键鼠输入后判为空闲,锁屏和休眠期间不累计活跃时间。
- 今日使用:当天工作、中性和娱乐应用的前台使用时长。
- 工作时间:被分类为
Productive的前台应用使用时长,不限制上下班时段。 - 专注时间:工作链内累计达到 10 分钟的生产力应用使用时长;工作类应用之间切换可以延续工作链,中性应用和系统类应用分别允许 120 秒和 30 秒宽限。
专注时间属于工作时间的一部分,两者不能相加。分类规则按程序文件名匹配,可以在设置中自定义;修改仅影响之后的记录。当前不识别网址,因此不能自动区分浏览器中的工作与娱乐内容。
技术实现
| 层级 | 技术与职责 |
|---|---|
| 插件与系统交互 | C++17、Win32、TrafficMonitor 插件接口,采集前台应用、空闲状态和系统事件 |
| 核心逻辑 | 会话管理、应用分类、使用时间与专注时间统计 |
| 界面 | Direct2D / DirectWrite 绘制原生统计面板 |
| 持久化 | SQLite 保存活动记录,INI 保存设置 |
| 构建与验证 | CMake、MSVC、PowerShell 脚本和 CTest |
运行产物是单个 ActivityMonitor.dll,无需辅助 EXE、后台服务、浏览器内核或外置 SQLite DLL。采集、统计、存储、插件接口与界面分别组织在独立模块中,方便维护和验证。
数据与隐私
使用记录和设置保存在本机的 %LOCALAPPDATA%\ActivityMonitor\ 目录。插件自身不访问网络,也不上传数据。
窗口标题记录默认关闭,可在设置中主动开启;不采集网址、按键内容、剪贴板、截图或页面正文。
安装与使用
需要 Windows 10 / 11,以及支持插件的 TrafficMonitor。构建环境和完整命令见 项目 README。
- 从源码构建所需的 x64 或 x86 Release 版本,DLL 位数必须与 TrafficMonitor 进程一致。
- 完全退出 TrafficMonitor,将
ActivityMonitor.dll放入TrafficMonitor.exe同级的plugins文件夹。 - 重启宿主,在插件管理器中确认加载成功,并在显示设置中启用需要的统计项。
- 点击插件显示项打开统计面板,或通过插件管理器的“选项”进入设置页。
当前统计面板主要使用英文界面,更新 DLL 需要先退出宿主再替换。
当前状态
截至 2026 年 9 月 14 日,项目文档记录了 x64 Release、x86 Release 和 x64 Debug 的构建与 CTest 验证,并确认可在官方 PluginTester 1.00 和 TrafficMonitor Lite 1.86 中加载。
实体锁屏与睡眠、多显示器混合 DPI、长期压力测试仍需进一步验证。宿主突然退出可能丢失最近约 30 秒记录,部分受保护进程及 UWP 应用也存在识别限制。具体范围见 验证记录。