.NET 轻量级键鼠录制与回放自动化扩展库

目录

前言

项目介绍

项目功能

1、键鼠事件监听

2、操作录制与回放

3、输入模拟

4、事件类型控制

项目特点

项目技术

项目使用

项目效果

项目源码

总结


 

前言

在自动化操作、游戏辅助、软件测试等领域,键盘和鼠标事件的模拟与录制回放功能具有广泛的应用需求。

传统的"按键精灵"类工具虽然功能强大,但往往封闭性强、难以集成到开发项目中。一个基于 GlobalMouseKeyHook 和 InputSimulator 的开源类库应运而生,提供了一个灵活、可扩展的键鼠事件捕获与模拟解决方案。

该项目为开发提供了丰富的接口和高度定制化的功能,适用于 .NET Framework 4.0 及以上版本,是一个轻量级、高性能的键鼠操作模拟与录制工具库。

项目介绍

项目是一个基于 C# 编写的开源扩展类库,旨在为 .NET 开发者提供完整的键盘与鼠标事件监控、录制及回放能力。它利用了两个核心组件:

GlobalMouseKeyHook:用于全局监听键盘和鼠标事件;

InputSimulator:用于模拟用户输入行为(如按键、点击等);

通过这两个库的结合,开发者可以轻松实现类似"按键精灵"的自动化脚本功能,包括录制用户的键鼠操作并进行回放。

项目支持多个 .NET Framework 分支,主分支支持 .NET Framework 4.0,另有专为 .NET Framework 4.8 设计的独立分支。

图片

项目功能

1、键鼠事件监听

支持全局监听键盘按下、释放、输入事件;

支持监听鼠标移动、点击、双击、拖拽等操作;

提供事件过滤机制,可启用或禁用特定类型的事件。

2、操作录制与回放

用户可启动录制功能,自动记录所有键鼠操作;

录制内容可保存为列表对象,便于后续处理;

支持对录制的操作进行精确回放,模拟原始用户行为。

3、输入模拟

利用 InputSimulator 模拟真实用户输入;

支持多种模拟模式,包括单次按键、连续输入、鼠标动作等;

提供 API 接口,方便集成到各种桌面应用中。

4、事件类型控制

可根据需要启用或禁用某些事件类型,例如只监听鼠标双击而不监听鼠标移动;

提高性能并减少不必要的资源消耗。

项目特点

特点

描述

✅ 轻量高效

类库结构清晰,占用资源少,适合嵌入式使用

✅ 高度可定制

支持事件过滤、自定义回放逻辑

✅ 易于集成

提供完整示例代码,便于快速上手

✅ 多平台兼容

支持 .NET Framework 4.0 及以上版本

✅ 开源开放

所有源码公开,持续更新维护

✅ 灵活扩展

可作为基础模块二次开发,构建更复杂的自动化系统

项目技术

该项目采用 C# 编写,依托于两个关键第三方库:

GlobalMouseKeyHook:用于钩子拦截系统级别的键鼠事件;

InputSimulator:用于模拟用户输入行为,实现自动化操作。

类库设计上采用了工厂模式与观察者模式,通过 KeyMouseFactory 创建不同的事件监听器(如 KeyboardWatcher 和 MouseWatcher),并通过事件委托(Event Handler)机制捕捉用户输入。

录制与回放流程清晰,支持将录制的事件序列化为列表对象,并可通过 InputSimulator 进行逐条回放。此外,项目还提供了详细的使用文档和示例代码,极大降低了开发的接入门槛。

在性能方面,项目通过事件过滤机制减少了不必要的资源消耗,同时保持了较低的 CPU 占用率,适合长时间运行的场景。

项目使用

private readonly KeyMouseFactory eventHookFactory = new KeyMouseFactory(HookType.GlobalEvents);
privatereadonly KeyboardWatcher keyboardWatcher;
privatereadonly MouseWatcher mouseWatcher;
private List<MouseKeyEvent> _mouseKeyEvents;

public FormMain()
{
   InitializeComponent();

   keyboardWatcher = eventHookFactory.GetKeyboardWatcher();
   keyboardWatcher.OnKeyboardInput += (s, e) =>
   {
if (_mouseKeyEvents != null)
     _mouseKeyEvents.Add(e);
   };

   mouseWatcher = eventHookFactory.GetMouseWatcher();
   mouseWatcher.OnMouseInput += (s, e) =>
   {
if (_mouseKeyEvents != null)
     _mouseKeyEvents.Add(e);
   };
}

private void StartWatch(IKeyboardMouseEvents events = null)
{
    _macroEvents = new List<MacroEvent>();
    keyboardWatcher.Start(events);
    mouseWatcher.Start(events);
}

private void StopWatch()
{
   keyboardWatcher.Stop();
   mouseWatcher.Stop();
}

private void Playback()
{
   var sim = new InputSimulator();
   //var sim = new KeyMouseSimulator();
   sim.PlayBack(_macroEvents);
}
keyboardWatcher = eventHookFactory.GetKeyboardWatcher().Disable
(MacroEventType.KeyDown | MacroEventType.KeyUp).Enable(MacroEventType.KeyPress);
mouseWatcher = eventHookFactory.GetMouseWatcher().
Enable(MacroEventType.MouseDoubleClick | MacroEventType.MouseDragStarted).Disable
(MacroEventType.MouseDragFinished | MacroEventType.MouseMove);

var sim = new InputSimulator().Enable(MacroEventType.MouseDoubleClick | MacroEventType.KeyPress).Disable
(MacroEventType.MouseMove | MacroEventType.KeyDown | MacroEventType.KeyUp);

项目效果

图片

项目源码

Gitee:https://gitee.com/loamen/KeyMouseHook

总结

随着自动化需求的不断增长,键鼠操作的模拟与录制已成为许多应用场景中不可或缺的功能。本项目基于成熟的技术栈,结合简洁的设计理念,为开发提供了一套稳定、高效的键鼠事件处理方案。无论是用于软件测试、自动化任务还是桌面辅助工具开发,都是一个值得信赖的选择。

引入地址 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值