Beispiel #1
0
 /// <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);
     }
 }
Beispiel #2
0
        // 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));
        }