Home

Awesome

nuget master

Mouse and Keyboard Hooking Library in c#

NEWS!

Added support for the detection of key combinations and sequences see: Quickstart - Detecting Key Combinations and Sequences

What it does?

This library allows you to tap the keyboard and mouse, to detect and record their activity even when an application is inactive and runs in the background.

Prerequisites

Installation and sources

<pre> nuget install MouseKeyHook </pre>

Usage

private IKeyboardMouseEvents m_GlobalHook;

public void Subscribe()
{
    // Note: for the application hook, use the Hook.AppEvents() instead
    m_GlobalHook = Hook.GlobalEvents();

    m_GlobalHook.MouseDownExt += GlobalHookMouseDownExt;
    m_GlobalHook.KeyPress += GlobalHookKeyPress;
}

private void GlobalHookKeyPress(object sender, KeyPressEventArgs e)
{
    Console.WriteLine("KeyPress: \t{0}", e.KeyChar);
}

private void GlobalHookMouseDownExt(object sender, MouseEventExtArgs e)
{
    Console.WriteLine("MouseDown: \t{0}; \t System Timestamp: \t{1}", e.Button, e.Timestamp);

    // uncommenting the following line will suppress the middle mouse button click
    // if (e.Buttons == MouseButtons.Middle) { e.Handled = true; }
}

public void Unsubscribe()
{
    m_GlobalHook.MouseDownExt -= GlobalHookMouseDownExt;
    m_GlobalHook.KeyPress -= GlobalHookKeyPress;

    //It is recommened to dispose it
    m_GlobalHook.Dispose();
}

(also have a look at the Demo app included with the source)

How does it work?

This library attaches to windows global hooks, tracks keyboard and mouse clicks, movements and raises common .NET events with KeyEventArgs and MouseEventArgs, so you can easily retrieve any information you need:

Additionally, there are MouseEventExtArgs and KeyEventExtArgs which provide further options:

Troubleshooting and support

Current project build status

The CI builds are generously hosted and run on the Travis and AppVeyor infrastructures.

Travis-CIAppVeyor
mastermastermaster
vNextvNextvNext

History

YearURL
2000 - 2008http://www.codeproject.com/KB/cs/globalhook.aspx
2008 - 2015https://globalmousekeyhook.codeplex.com/
2015 - nowhttps://github.com/gmamaladze/globalmousekeyhook

Quick contributing guide

License

The MIT license see: LICENSE.txt