Exemple #1
0
        private IntPtr RawInputWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            try
            {
                WindowsMessagesFlags wm = (WindowsMessagesFlags)msg;
                if (wm == WindowsMessagesFlags.WM_INPUT)
                {
                    int size = Marshal.SizeOf(typeof(RawInput));
                    if (User32.GetRawInputData(lParam, RawInputCommand.Input, out RawInput raw, ref size, Marshal.SizeOf(typeof(RawInputHeader))) != -1)
                    {
                        var  mb = raw.Data.Mouse.ButtonFlags;
                        bool validRawMouseInputReceived = mb == RawMouseButtons.XButton1Up || mb == RawMouseButtons.XButton2Up || mb == RawMouseButtons.MouseWheel;
                        if (validRawMouseInputReceived && this.LstHotKeys.SelectedItem is GenericHotkeyProxy hotkeyProxy &&
                            this.TxtSingleKey.IsFocused && Processes.IsCurrentProcessFocused())
                        {
                            bool        validButton = true;
                            MouseAction mouseAction = 0;

                            if (mb == RawMouseButtons.XButton1Up)
                            {
                                mouseAction = MouseAction.XButton1;
                            }
                            else if (mb == RawMouseButtons.XButton2Up)
                            {
                                mouseAction = MouseAction.XButton2;
                            }
                            else if (mb == RawMouseButtons.MouseWheel)
                            {
                                short delta = unchecked ((short)raw.Data.Mouse.ButtonData);
                                if (delta > 0) // MWheelUp
                                {
                                    mouseAction = MouseAction.MWheelUp;
                                }
                                else if (delta < 0) // MWheelDown
                                {
                                    mouseAction = MouseAction.MWheelDown;
                                }
                            }
                            else
                            {
                                validButton = false;
                            }

                            if (validButton && Enum.IsDefined(typeof(MouseAction), mouseAction))
                            {
                                this.UpdateHotkeyActivator(hotkeyProxy, HotkeyType.MouseHook, mouseAction, mouseAction.ToString());
                            }
                        }
                    }
                }

                return(IntPtr.Zero);
            }
            catch (Exception e)
            {
                logger.Error("Error", e);
                return(IntPtr.Zero);
            }
        }
        public static void ImplicitCastToKeyOrMouseButton_FromMouseAction()
        {
            const MouseAction mouseAction = MouseAction.XButton1;
            KeyOrButton       keyOrButton = mouseAction;

            Assert.Multiple(() =>
            {
                Assert.That(!keyOrButton.IsKey);
                Assert.That(keyOrButton.MouseButton, Is.EqualTo(mouseAction));
            });
        }
Exemple #3
0
        private IntPtr MouseHookProc(int nCode, WindowsMessagesFlags wParam, LowLevelMouseHookStruct lParam)
        {
            if (nCode >= 0)
            {
                if (this.LstHotKeys.SelectedItem is GenericHotkeyProxy hotkeyProxy &&
                    this.TxtSingleKey.IsFocused && Processes.IsCurrentProcessFocused())
                {
                    bool        validButton = false;
                    MouseAction mouseAction = 0;

                    var union = new Union32(lParam.mouseData);

                    if (wParam == WindowsMessagesFlags.WM_XBUTTONUP) // XButton
                    {
                        if (union.High == 0x0001)
                        {
                            validButton = true;
                            mouseAction = MouseAction.XButton1;
                        }
                        else if (union.High == 0x0002)
                        {
                            validButton = true;
                            mouseAction = MouseAction.XButton2;
                        }
                    }
                    else if (wParam == WindowsMessagesFlags.WM_MOUSEWHEEL) // MWheel
                    {
                        short delta = unchecked ((short)union.High);
                        if (delta > 0)
                        {
                            // MWheelUp
                            validButton = true;
                            mouseAction = MouseAction.MWheelUp;
                        }
                        else if (delta < 0)
                        {
                            // MWheelDown
                            validButton = true;
                            mouseAction = MouseAction.MWheelDown;
                        }
                    }

                    if (validButton && Enum.IsDefined(typeof(MouseAction), mouseAction))
                    {
                        this.UpdateHotkeyActivator(hotkeyProxy, HotkeyType.MouseHook, mouseAction, mouseAction.ToString());
                    }
                }
            }

            return(User32.CallNextHookEx(this.hHook, nCode, wParam, lParam));
        }
Exemple #4
0
 public KeyOrButton(MouseAction mouseAction)
 {
     this.MouseButton = mouseAction;
 }