/// <summary> /// Raises the WindowsHookLiba.KeyboardHook.KeyDown event. /// </summary> /// <param name="e">A WindowsHookLiba.KeyBoardEventArgs /// that contains the event data.</param> protected virtual void OnKeyDown(WindowsHookLiba.KeyboardEventArgs e) { if (KeyDown != null) { KeyDown(this, e); } }
// This sub processes all the keyboard messages and passes to the other windows private IntPtr KeyboardProc(int nCode, IntPtr wParam, ref UnsafeNativeMethods.KeyboardData lParam) { if (nCode >= UnsafeNativeMethods.HC_ACTION) { WindowsHookLiba.KeyboardEventArgs e; Keys keyCode = (Keys)lParam.vkCode; if ((int)wParam == UnsafeNativeMethods.WM_KEYDOWN | (int)wParam == UnsafeNativeMethods.WM_SYSKEYDOWN) { if (keyCode == Keys.LMenu | keyCode == Keys.RMenu) { this._keyData = (this._keyData | Keys.Alt); e = new WindowsHookLiba.KeyboardEventArgs(this._keyData | Keys.Menu, keyCode); } else if (keyCode == Keys.LControlKey | keyCode == Keys.RControlKey) { this._keyData = (this._keyData | Keys.Control); e = new WindowsHookLiba.KeyboardEventArgs(this._keyData | Keys.ControlKey, keyCode); } else if (keyCode == Keys.LShiftKey | keyCode == Keys.RShiftKey) { this._keyData = (this._keyData | Keys.Shift); e = new WindowsHookLiba.KeyboardEventArgs(this._keyData | Keys.ShiftKey, keyCode); } else { e = new WindowsHookLiba.KeyboardEventArgs(this._keyData | keyCode, keyCode); } this.OnKeyDown(e); if (e.Handled) { return(new IntPtr(1)); } } else if ((int)wParam == UnsafeNativeMethods.WM_KEYUP | (int)wParam == UnsafeNativeMethods.WM_SYSKEYUP) { if (keyCode == Keys.LMenu | keyCode == Keys.RMenu) { this._keyData = (this._keyData & ~Keys.Alt); e = new WindowsHookLiba.KeyboardEventArgs(this._keyData | Keys.Menu, keyCode); } else if (keyCode == Keys.LControlKey | keyCode == Keys.RControlKey) { this._keyData = (this._keyData & ~Keys.Control); e = new WindowsHookLiba.KeyboardEventArgs(this._keyData | Keys.ControlKey, keyCode); } else if (keyCode == Keys.LShiftKey | keyCode == Keys.RShiftKey) { this._keyData = (this._keyData & ~Keys.Shift); e = new WindowsHookLiba.KeyboardEventArgs(this._keyData | Keys.ShiftKey, keyCode); } else { e = new WindowsHookLiba.KeyboardEventArgs(this._keyData | keyCode, keyCode); } this.OnKeyUp(e); if (e.Handled) { return(new IntPtr(1)); } } } return(UnsafeNativeMethods.CallNextHookEx(this._hKeyboardHook, nCode, wParam, ref lParam)); }