Zzz – Rev 1
?pathlinks?
using System;
namespace Zzz.Idle
{
public class KeyboardInput : IDisposable
{
#region Static Fields and Constants
private const int WhKeyboardLl = 13;
#endregion
#region Public Events & Delegates
public event EventHandler<EventArgs> KeyboardKeyPressed;
#endregion
#region Private Delegates, Events, Enums, Properties, Indexers and Fields
private readonly WindowsHookHelper.HookDelegate _keyboardDelegate;
private readonly IntPtr _keyBoardHandle;
private bool _disposed;
#endregion
#region Constructors, Destructors and Finalizers
public KeyboardInput()
{
_keyboardDelegate = KeyboardHookDelegate;
_keyBoardHandle = WindowsHookHelper.SetWindowsHookEx(
WhKeyboardLl, _keyboardDelegate, IntPtr.Zero, 0);
}
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool disposing)
{
if (!_disposed)
{
if (_keyBoardHandle != IntPtr.Zero)
{
WindowsHookHelper.UnhookWindowsHookEx(_keyBoardHandle);
}
_disposed = true;
}
}
~KeyboardInput()
{
Dispose(false);
}
#endregion
#region Private Methods
private IntPtr KeyboardHookDelegate(int code, IntPtr wParam, IntPtr lParam)
{
if (code < 0)
{
return WindowsHookHelper.CallNextHookEx(_keyBoardHandle, code, wParam, lParam);
}
KeyboardKeyPressed?.BeginInvoke(this, EventArgs.Empty, ar => { }, null);
return WindowsHookHelper.CallNextHookEx(_keyBoardHandle, code, wParam, lParam);
}
#endregion
}
}
Generated by GNU Enscript 1.6.5.90.