C# 工业级全局键鼠行为监测与日志记录工具

39 阅读4分钟

前言

智能制造与自动化产线中,人仍然是关键的操作与决策节点。无论是设备调试、异常处理,还是日常巡检,操作员的每一步键盘输入和鼠标点击都可能关联到生产安全、质量控制或流程合规。如何有效记录并回溯这些关键人机交互行为,成为工业软件系统中不可忽视的一环。

今天推荐一款专为工业环境设计的本地化操作行为记录工具。它能够在工控终端后台静默运行,实时捕获所有键鼠操作,并自动关联当前活动窗口的程序名称、窗口标题及进程路径,生成结构化日志。

项目介绍

一款基于 C# 开发的 Windows 桌面级操作行为记录工具,专为工业环境中的操作审计与行为分析设计。部署于工控机或操作终端后,它能无感捕获操作员的所有键鼠行为,包括按键内容、点击位置、当前运行程序、窗口标题及进程路径,并将数据安全存储于本地数据库。系统支持后台静默运行,通过 Alt+A 快捷键快速切换显示状态,适用于对界面干扰敏感的工业现场。

项目功能

1、 实时记录操作员在 HMI、SCADA、MES 或自研工业软件中的所有键鼠操作;

2、 自动关联操作发生时的活动窗口信息,精准识别操作所属系统(如"WinCC""FactoryTalk"等);

3、 支持日志表格展示,可右键直接定位到对应工业软件的安装路径,便于快速核查;

4、 提供按日统计功能,汇总每日操作频次,辅助评估操作强度或培训效果;

5、 通过折线图动态展示近几秒内操作活跃度,可用于异常行为初步预警(如长时间无操作或高频误触);

6、 生成高频操作饼图,帮助工程师识别常用功能模块或潜在操作瓶颈;

7、 热力图功能(开发中)未来可用于分析操作员在特定界面上的点击分布,优化 HMI 布局。

项目特点

工业场景中突出三大优势:

一是完全本地化运行,不依赖网络,不上传任何数据,符合工业信息安全规范;

二是低资源占用,即使在老旧工控机上也能稳定运行,不影响主业务系统;

三是高可追溯性,所有操作均有时间戳与上下文信息,满足 ISO 质量管理体系或安全生产审计要求。

另外,界面支持暗色模式,适应车间强光或弱光环境。

项目技术

1、基于 .NET Framework,采用 WinForm 与 MetroFramework UI 开发;

2、通过 Windows 全局钩子(WH_KEYBOARD_LL / WH_MOUSE_LL)捕获键鼠事件;

3、调用 GetForegroundWindow 和 GetWindowThreadProcessId 获取当前操作上下文;

4、使用 Entity Framework 配合 SQLite/SQL Server 实现本地数据持久化;

5、集成 LiveCharts 提供轻量级操作行为可视化图表。

项目代码

日志记录页

private async void M_hook_MouseDown(object sender, MouseEventArgs e)
{
    //获取windos窗口信息
    Dictionary<string, object> winDet = GetWindowDetail();
    string info = winDet["info"].ToString();
    string tit = winDet["tit"].ToString();
    Icon ico = (Icon)winDet["ico"];
    StringBuilder className = (StringBuilder)winDet["className"];
    //添加数据
    KeyMouseModel km = new KeyMouseModel();
    KeyMouse KeyM = new KeyMouse();
    try
    {
        km.CategoryIcon = (Bitmap)imageList.Images["mousec.png"];
    }
    catch (Exception ex)
    {
        km.CategoryIcon = null;
    }
    KeyM.DeviceName = km.DeviceName = "鼠标";
    KeyM.KeyData = km.KeyData = e.Button.ToString();
    KeyM.LocationX = km.LocationX = e.X;
    KeyM.LocationY = km.LocationY = e.Y;
    KeyM.Title = km.Title = tit;
    KeyM.ClassName = km.ClassName = className.ToString();
    KeyM.ProcessPath = km.ProcessPath = info;
    km.ExecuteDate = DateTime.Now.ToString();
    KeyM.ExecuteDate = DateTime.Now;
    try
    {
        km.ProgramIcon = ico == null ? (Bitmap)imageList.Images["win.ico"] : ico.ToBitmap();
    }
    catch (Exception ex)
    {
        km.ProgramIcon = null;
    }
    CSGlobal.GetInstance().KeyMs.Add(km);
    using (var context = new WareHouse_localEntities())
    {
        context.KeyMice.Add(KeyM);
        //context.SaveChanges();
        await context.SaveChangesAsync();
    }
}

项目效果

按键日志

662ff3b54857e1475bf089405d33d7c3_keyRecord

按键统计

dc06937c410feeb59ffaa9709075b5e8_keyRecord2

按键记录

40c0f5d9a565a2b33516902479c49211_keyRecord3

项目源码

代码结构清晰,模块解耦良好,便于工业集成。核心逻辑集中在 HookOutputFrm2,支持二次开发,例如增加 OPC UA 数据联动、导出审计报告、设置敏感操作告警等。

Gitee:gitee.com/Rna_zoro/Ke…

总结

工业 4.0 与数字化转型浪潮下,人的操作行为正成为智能制造数据闭环的重要一环。KeyRecord 虽小,却为工业现场提供一种低成本、高实效的操作行为记录方案。它不是监控员工的"电子眼",而是保障流程合规、提升人机协同效率的"数字日志仪"。随着与 MES、PLM 等系统的深度融合,这类轻量级行为记录工具将在工业领域发挥更大价值。

关键词

工业监控、操作审计、C#、全局钩子、人机交互、本地存储、行为追溯、HMI 分析、工控安全、WinForm、工业安全、操作审计、行为追溯、SOP符合性、人机交互、事故分析、工控系统、SCADA、安全生产、数字黑匣子

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

优秀是一种习惯,欢迎大家留言学习!