# 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**: 105
- **Forks**: 59
- **Created**: 2018-11-12
- **Last Updated**: 2025-08-14
## 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)
[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)