Ejemplo n.º 1
0
        private static IntPtr MouseHookProc(int nCode, WindowsMessagesFlags wParam, LowLevelMouseHookStruct lParam)
        {
            if (nCode >= 0 && registeredMouseHooks != null)
            {
                foreach (var h in registeredMouseHooks)
                {
                    Union32 union = new Union32(lParam.mouseData);

                    bool isXButton = h.KeyOrButton.MouseButton == MouseAction.XButton1 || h.KeyOrButton.MouseButton == MouseAction.XButton2;
                    bool isMWheel  = h.KeyOrButton.MouseButton == MouseAction.MWheelUp || h.KeyOrButton.MouseButton == MouseAction.MWheelDown;

                    if (isXButton && wParam == WindowsMessagesFlags.WM_XBUTTONUP)
                    {
                        if (h.TestModifiers() && (union.High == 0x0001 && h.KeyOrButton.MouseButton == MouseAction.XButton1 ||
                                                  union.High == 0x0002 && h.KeyOrButton.MouseButton == MouseAction.XButton2))
                        {
                            HotkeyActionCallback(h);
                        }
                    }
                    else if (isMWheel && wParam == WindowsMessagesFlags.WM_MOUSEWHEEL)
                    {
                        short delta = unchecked ((short)union.High);
                        if (h.TestModifiers() && (delta > 0 && h.KeyOrButton.MouseButton == MouseAction.MWheelUp ||
                                                  delta < 0 && h.KeyOrButton.MouseButton == MouseAction.MWheelDown))
                        {
                            HotkeyActionCallback(h);
                        }
                    }
                }
            }

            return(User32.CallNextHookEx(hMouseHook, nCode, wParam, lParam));
        }
Ejemplo n.º 2
0
        private IntPtr MouseHookProc(int nCode, WindowsMessagesFlags wParam, LowLevelMouseHookStruct lParam)
        {
            if (nCode >= 0)
            {
                foreach (IMouseHookHotkey h in this.registeredHotkeys)
                {
                    var union = new Union32(lParam.mouseData);

                    bool isXButton = h.MouseButton == MouseAction.XButton1 || h.MouseButton == MouseAction.XButton2;
                    bool isMWheel  = h.MouseButton == MouseAction.MWheelUp || h.MouseButton == MouseAction.MWheelDown;

                    if (isXButton && wParam == WindowsMessagesFlags.WM_XBUTTONUP)
                    {
                        if (h.AreModifiersPressed() && (union.High == 0x0001 && h.MouseButton == MouseAction.XButton1 ||
                                                        union.High == 0x0002 && h.MouseButton == MouseAction.XButton2))
                        {
                            this.Visit(h);
                        }
                    }
                    else if (isMWheel && wParam == WindowsMessagesFlags.WM_MOUSEWHEEL)
                    {
                        short delta = unchecked ((short)union.High);
                        if (h.AreModifiersPressed() && (delta > 0 && h.MouseButton == MouseAction.MWheelUp ||
                                                        delta < 0 && h.MouseButton == MouseAction.MWheelDown))
                        {
                            this.Visit(h);
                        }
                    }
                }
            }

            return(User32.CallNextHookEx(this.hMouseHook, nCode, wParam, lParam));
        }
Ejemplo n.º 3
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);
            }
        }
Ejemplo n.º 4
0
        public static bool SendKeyUp(IntPtr hWnd, Key key, bool postMessage = false, bool extended = false)
        {
            const WindowsMessagesFlags msg = WindowsMessagesFlags.WM_KEYUP;
            IntPtr wParam = (IntPtr)key.GetVirtualKey();
            IntPtr lParam = (IntPtr)key.GetLParam(1, (byte)(extended ? 1 : 0), 0, 1, 1);

            return(SendWindowMessage(hWnd, msg, wParam, lParam, postMessage));
        }
Ejemplo n.º 5
0
        private IntPtr MouseHookProc(int nCode, WindowsMessagesFlags wParam, LowLevelMouseHookStruct lParam)
        {
            if (nCode >= 0)
            {
                if (this.TxtSingleKey.IsFocused)
                {
                    if (wParam == WindowsMessagesFlags.WM_XBUTTONUP)
                    {
                        Union32 union = new Union32(lParam.mouseData);

                        if (union.High == 0x0001)
                        {
                            this.TxtSingleKey.Text = MouseAction.XButton1.ToString();
                            if (this.LstHotKeys.SelectedItem is Hotkey hotkey)
                            {
                                hotkey.KeyOrButton = MouseAction.XButton1;
                            }
                        }
                        else if (union.High == 0x0002)
                        {
                            this.TxtSingleKey.Text = MouseAction.XButton2.ToString();
                            if (this.LstHotKeys.SelectedItem is Hotkey hotkey)
                            {
                                hotkey.KeyOrButton = MouseAction.XButton2;
                            }
                        }
                    }
                    else if (wParam == WindowsMessagesFlags.WM_MOUSEWHEEL)
                    {
                        Union32 union = new Union32(lParam.mouseData);

                        short delta = unchecked ((short)union.High);
                        if (delta > 0)
                        {
                            // MWheelUp
                            this.TxtSingleKey.Text = MouseAction.MWheelUp.ToString();
                            if (this.LstHotKeys.SelectedItem is Hotkey hotkey)
                            {
                                hotkey.KeyOrButton = MouseAction.MWheelUp;
                            }
                        }
                        else if (delta < 0)
                        {
                            // MWheelDown
                            this.TxtSingleKey.Text = MouseAction.MWheelDown.ToString();
                            if (this.LstHotKeys.SelectedItem is Hotkey hotkey)
                            {
                                hotkey.KeyOrButton = MouseAction.MWheelDown;
                            }
                        }
                    }
                }
            }

            return(User32.CallNextHookEx(this.hHook, nCode, wParam, lParam));
        }
Ejemplo n.º 6
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));
        }
Ejemplo n.º 7
0
 public static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, WindowsMessagesFlags wParam, [In] LowLevelMouseHookStruct lParam);
Ejemplo n.º 8
0
 public static bool SendWindowMessage(IntPtr hWnd, WindowsMessagesFlags msg, IntPtr wParam, IntPtr lParam, bool postMessage = false)
 {
     return(postMessage ? User32.PostMessage(hWnd, (uint)msg, wParam, lParam) : User32.SendMessage(hWnd, (uint)msg, wParam, lParam));
 }