Exemplo n.º 1
0
        private IntPtr LowLevelKeyboardCallback(
            int hookCode,
            IntPtr keyPressEventType,
            KeyboardLowLevelInputEvent keyboardEvent)
        {
            var hookResult = CallNextHookEx(
                (IntPtr)0,
                hookCode,
                keyPressEventType,
                keyboardEvent);

            if (hookCode < 0)
            {
                return(hookResult);
            }

            try
            {
                UpdateModifierKeys(
                    keyPressEventType,
                    keyboardEvent.VirtualKeyCode);

                // We only care about key down
#pragma warning disable IDE0078 // Use pattern matching
                if (keyPressEventType == (IntPtr)KeyPressEventType.KeyDown ||
                    keyPressEventType == (IntPtr)KeyPressEventType.SysKeyDown)
#pragma warning restore IDE0078 // Use pattern matching
                {
                    var localRef = RegisteredHotkeys;
                    var hotkey   = new Hotkey
                    {
                        Key          = keyboardEvent.VirtualKeyCode,
                        ModifierKeys = CurrentModifierKeys,
                    };
                    if (localRef.Contains(hotkey))
                    {
                        OnHotkeyPressed(hotkey.Key, CurrentModifierKeys);
                    }
                }
            }
            catch (Exception)
            {
                CurrentModifierKeys = ModifierKeys.None;
            }
            return(hookResult);
        }
Exemplo n.º 2
0
 private static extern IntPtr CallNextHookEx(
     IntPtr hookHandle,
     int hookCode,
     IntPtr keyPressEventType,
     KeyboardLowLevelInputEvent keyboardEvent);