Пример #1
0
        // -------------------------------------------------------------------------
        private bool ShouldBlockWheel(InputOptionsInfo info)
        {
            var options = _inputHookOptions.inputInfo;

            if ((!options.wheelDown || !info.wheelDown) && (!options.wheelUp || !info.wheelUp))
            {
                return(false);
            }
            return(options.controlPressed == info.controlPressed &&
                   options.shiftPressed == info.shiftPressed);
        }
Пример #2
0
        /// <summary>
        /// This is called on another thread
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        private bool OnllMouseHook_WheelInputEvent(InputOptionsInfo info)
        {
            if (_inputHookOptions == null)
            {
                return(false);
            }

            lock (this)
            {
                if (!_nativeWindow.IsWindowInForeground() || !ShouldBlockWheel(info))
                {
                    return(false);
                }

                // TODO: Consider running this callback on a separate thread
                // so that the input doesn't become laggy
                onMouseWheelBlocked?.Invoke(info);
                return(true);
            }
        }
Пример #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="mouseLowLevelHook"></param>
        /// <returns></returns>
        private InputOptionsInfo ExtractInfo(MSLLHOOKSTRUCT mouseLowLevelHook)
        {
            var info = new InputOptionsInfo();

            int delta = ((short)(mouseLowLevelHook.mouseData >> 16));

            info.wheelUp   = (delta == 120);
            info.wheelDown = (delta == -120);

            if (!info.wheelUp && !info.wheelDown)
            {
                return(info);
            }

            info.controlPressed =
                (GetKeyState(VirtualKeyStates.VK_CONTROL) & 0x8000) > 0;

            info.shiftPressed =
                (GetKeyState(VirtualKeyStates.VK_SHIFT) & 0x8000) > 0;

            return(info);
        }