示例#1
0
        private IntPtr HookCallbackInner(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                if (wParam == (IntPtr)InterceptKeys.WM_KEYDOWN)
                {
                    int vkCode = Marshal.ReadInt32(lParam);

                    if (KeyDown != null)
                    {
                        KeyDown(this, new RawKeyEventArgs(vkCode, false));
                    }
                }
                else if (wParam == (IntPtr)InterceptKeys.WM_KEYUP)
                {
                    int vkCode = Marshal.ReadInt32(lParam);

                    if (KeyUp != null)
                    {
                        KeyUp(this, new RawKeyEventArgs(vkCode, false));
                    }
                }
            }
            return(InterceptKeys.CallNextHookEx(hookId, nCode, wParam, lParam));
        }
示例#2
0
 private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
 {
     try
     {
         return(HookCallbackInner(nCode, wParam, lParam));
     }
     catch (Exception e)
     {
         Console.WriteLine("Exception: " + e.Message);
     }
     return(InterceptKeys.CallNextHookEx(hookId, nCode, wParam, lParam));
 }
示例#3
0
 public void Dispose()
 {
     InterceptKeys.UnhookWindowsHookEx(hookId);
     _hook = null;
 }
示例#4
0
 public KeyboardListener()
 {
     _hook  = (InterceptKeys.LowLevelKeyboardProc)HookCallback;
     hookId = InterceptKeys.SetHook(_hook);
 }