示例#1
0
    private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
    {
        if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
        {
            int vkCode = Marshal.ReadInt32(lParam);
            OnKeyPressed.Invoke(this, ((Keys)vkCode));
        }
        else if (nCode >= 0 && wParam == (IntPtr)WM_KEYUP)
        {
            int vkCode = Marshal.ReadInt32(lParam);
            OnKeyUnpressed.Invoke(this, ((Keys)vkCode));
        }

        return(CallNextHookEx(_hookID, nCode, wParam, lParam));
    }
示例#2
0
        private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
            {
                int vkCode = Marshal.ReadInt32(lParam);

                if (OnKeyPressed != null)
                {
                    OnKeyPressed.Invoke(this, KeyInterop.KeyFromVirtualKey(vkCode));
                }
            }
            else if (nCode >= 0 && wParam == (IntPtr)WM_KEYUP)
            {
                int vkCode = Marshal.ReadInt32(lParam);

                if (OnKeyUnpressed != null)
                {
                    OnKeyUnpressed.Invoke(this, KeyInterop.KeyFromVirtualKey(vkCode));
                }
            }

            return(CallNextHookEx(_hookID, nCode, wParam, lParam));
        }