# KeyMouseHook
**Repository Path**: loamen/KeyMouseHook
## Basic Information
- **Project Name**: KeyMouseHook
- **Description**: 这是一个基于globalmousekeyhook 和 InputSimulator 的类似于按键精灵的模拟键盘按键和鼠标点击操作的扩展类库。可以检测并记录键盘和鼠标的活动,你可以录制你的键鼠操作的记录并进行回放,可模拟键盘输入和鼠标点击操作。
- **Primary Language**: C#
- **License**: MIT
- **Default Branch**: master
- **Homepage**: http://www.loamen.com
- **GVP Project**: No
## Statistics
- **Stars**: 101
- **Forks**: 53
- **Created**: 2018-11-12
- **Last Updated**: 2025-06-13
## Categories & Tags
**Categories**: desktop-ui
**Tags**: None
## README
[![nuget][nuget-badge]][nuget-url]
[](https://github.com/loamen/KeyMouseHook/)
[](https://travis-ci.org/loamen/KeyMouseHook)
[](https://raw.githubusercontent.com/loamen/KeyMouseHook/master/LICENSE)
[]()
[](https://github.com/loamen/KeyMouseHook/releases)
[](https://github.com/loamen/KeyMouseHook/releases)
[nuget-badge]: https://img.shields.io/badge/nuget-v1.0.6-blue.svg
[nuget-url]: https://www.nuget.org/packages/KeyMouseHook
[source-url]: https://github.com/loamen/KeyMouseHook
[mousekeyhook-url]: https://github.com/gmamaladze/globalmousekeyhook
[inputsimulator-url]: https://github.com/michaelnoonan/inputsimulator
[readme-url]: https://github.com/loamen/KeyMouseHook/blob/master/README.md

[English][readme-url]
## 简介
这是一个基于[globalmousekeyhook][mousekeyhook-url] 和 [InputSimulator][inputsimulator-url] 的类似于按键精灵的模拟键盘按键和鼠标点击操作的扩展类库。可以检测并记录键盘和鼠标的活动,你可以录制你的键鼠操作的记录并进行回放,可模拟键盘输入和鼠标点击操作。
## 环境
* **Windows:** .Net Framework 4.0+
* **分支 master/dev:** .Net Framework 4.0
* **分支 framework4.8:** .Net Framework 4.8
## 安装和源码
> nuget install KeyMouseHook
* [NuGet package][nuget-url]
* [Source code][source-url]
## 使用
```csharp
private readonly KeyMouseFactory eventHookFactory = new KeyMouseFactory(HookType.GlobalEvents);
private readonly KeyboardWatcher keyboardWatcher;
private readonly MouseWatcher mouseWatcher;
private List _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();
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);
}
```
```csharp
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);
```
(源码里包含更详细的示例)
## 界面

## 鸣谢
* [globalmousekeyhook][mousekeyhook-url] (MIT License)
* [InputSimulator][inputsimulator-url] (MIT License)
## 贡献代码
- Fork并克隆到本机
- 创建一个分支并添加你的代码
- 发送一个Pull Request
## License
The MIT license see: [LICENSE](https://github.com/loamen/KeyMouseHook/blob/master/LICENSE)