コード例 #1
0
 public void SimulateMouseAction(ExtraMouse mouse)
 {
     StartSimulation();
     Debug.WriteLineIf(DEBUG, string.Format("Simulating button: {0}, action: {1} position: ({2},{3})", mouse.Button, mouse.Action, mouse.Position.X, mouse.Position.Y));
     mouse.SimulateMouseAction();
     StopSimulation();
 }
コード例 #2
0
        //public void SimulateHiddenAction(ExtraMouseActions action, Point pos)
        //{
        //    m_bSimimulate = true;
        //    ExtraMouse.SimateHiddenClick(action, pos);
        //    m_bSimimulate = false;
        //}

        public void SimulateMouseAction(ExtraMouseBtns button, ExtraMouseActions action)
        {
            StartSimulation();
            Debug.WriteLineIf(DEBUG, string.Format("Simulating button: {0}, action: {1}", button, action));
            ExtraMouse.SimulateMouseAction(button, action, m_LParam);
            StopSimulation();
        }
コード例 #3
0
 public ExtraMouse(ExtraMouse mouse)
 {
     m_button = mouse.Button;
     m_action = mouse.Action;
     m_point = mouse.Position;
     m_clicks = mouse.Cliks;
 }
コード例 #4
0
 public ExtraMouse(ExtraMouse mouse)
 {
     m_button = mouse.Button;
     m_action = mouse.Action;
     m_point  = mouse.Position;
     m_clicks = mouse.Cliks;
 }
コード例 #5
0
 public void ForceUninstall()
 {
     Debug.WriteLineIf(DEBUG, "FORCE MANUAL UNINSTALL!");
     Uninstall(m_bThreaded);
     m_cEnableHoldDownBtn.Stop();
     StopMouseInactivityTimer();
     m_mouseMode        = MouseMode.None;
     m_mouseHoldDownBtn = null;
     m_mouseExecuteBtn  = null;
     m_bShouldInstall   = false;
     m_bShouldUninstall = false;
 }
コード例 #6
0
 public void SetHookValues(MouseButtons toggleBtn, bool classicCurve, bool doubleBtn, bool wheelBtn,
                           int sensibleZone, int timeout, bool showTooltip, int toolTipInt)
 {
     m_cEnableHoldDownBtn.Interval = timeout;
     m_btnToggle              = ExtraMouse.MouseBtnToExtraBtn(toggleBtn);
     m_bUsingClassicCurve     = classicCurve;
     m_bUsingDoublebtn        = doubleBtn;
     m_bUsingWheelBtn         = wheelBtn;
     m_sensibleZone           = sensibleZone;
     m_bShowToolTip           = showTooltip;
     m_iToolTipInterval       = toolTipInt;
     m_bUsingClassicCurveOnly = m_bUsingClassicCurve && !m_bUsingDoublebtn && !m_bUsingWheelBtn;
 }
コード例 #7
0
        /// <summary>
        /// Sends information to the system that mouse button is being pressed
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void m_cEnableHoldDownBtn_Tick(object sender, EventArgs e)
        {
            //OnHookStateChanged(false);
            m_cEnableHoldDownBtn.Stop();
            Debug.WriteLineIf(DEBUG, "EnableTrigger_Tick Simulate Trigger button action");
            //inform engine that some button was pushed so the context menu of recognized gestures might be hidden
            ExtraMouse tempMouse = new ExtraMouse(m_mouseHoldDownBtn);

            RaiseMouseEvent(tempMouse);// new ExtraMouse(ExtraMouseBtns.None, ExtraMouseActions.Down, m_mouseHoldDownBtn.Position));
            if (!isEventCancelled())
            {
                SimulateMouseAction(tempMouse); // action down
            }
            m_mouseHoldDownBtn = null;
        }
コード例 #8
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="button"></param>
 /// <returns>True if button was released & event handled</returns>
 private bool CheckAndRelease(ExtraMouse button, IntPtr wParam)
 {
     if (button != null)
     {
         if (button.Action == ExtraMouseActions.Down)
         {
             if (wParam.ToInt32() == ExtraMouse.GetWmValue(button.Button, ExtraMouseActions.Up))
             {
                 Debug.WriteLineIf(DEBUG, string.Format("Button {0} Uninstalled", button.Button));
                 //button = null;
                 return(true);
             }
         }
         else
         {
             Debug.WriteLineIf(DEBUG, string.Format("Button {0} Uninstalled", button.Button));
             //button = null;
             return(true);
         }
     }
     return(false);
 }
コード例 #9
0
        private void RaiseMouseEvent(ExtraMouse mouse)
        {
            if (mouse.Action != ExtraMouseActions.Move)
            {
                Debug.WriteLineIf(DEBUG, string.Format("RaiseMouseEvent button: {0}, action {1}", mouse.Button, mouse.Action));
            }
            MouseEventArgs args = mouse.ToMouseEvent();

            if (mouse.Button == ExtraMouseBtns.Wheel)
            {
                OnMouseWheel(args);
            }
            else
            {
                switch (mouse.Action)
                {
                case ExtraMouseActions.Down:
                    OnMouseDown(args);
                    break;

                case ExtraMouseActions.Click:
                    OnMouseClick(args);
                    break;

                case ExtraMouseActions.Up:
                    OnMouseUp(args);
                    break;

                case ExtraMouseActions.DoubleClick:
                    OnMouseDoubleClick(args);
                    break;

                case ExtraMouseActions.Move:
                    OnMouseMove(args);
                    break;
                }
            }
        }
コード例 #10
0
        private bool HandleEvent(int code, IntPtr wParam, IntPtr lParam)
        {
            //Debug.WriteLineIf(DEBUG, string.Format("Code: {0} wParam: {1} lParam: {2}", code, wParam, lParam));
            ExtraMouse mouseEvent = new ExtraMouse(wParam, lParam);

            switch (mouseEvent.Action)
            {
            case ExtraMouseActions.Down:
                Debug.WriteLineIf(DEBUG, string.Format("{0} button _DOWN_ X: {1} Y: {2}", mouseEvent.Button, mouseEvent.Position.X, mouseEvent.Position.Y));
                if (m_mouseMode == MouseMode.Toggle || m_mouseMode == MouseMode.WheelBtn)
                {
                    return(false);
                }
                if (m_bUsingClassicCurveOnly && mouseEvent.Button != m_btnToggle)
                {
                    break;                                                                   //raise event
                }
                if (m_mouseHoldDownBtn == null)
                {
                    m_mouseHoldDownBtn = mouseEvent;
                    m_cEnableHoldDownBtn.Start();
                    return(true);
                }
                else
                {
                    if (!m_bUsingDoublebtn)
                    {
                        return(false);
                    }
                    //m_wndUnderCursor = GetWndUnderCursor.FromPoint(mouseEvent.Position);
                    m_mouseMode = MouseMode.DoubleBtn;

                    // second button has not been pushed yet
                    if (m_mouseExecuteBtn == null)
                    {
                        m_cEnableHoldDownBtn.Stop();
                        m_mouseExecuteBtn = mouseEvent;
                        Debug.WriteLineIf(DEBUG, "Start Timer OnDoubleBtnAction Notify Only");
                        RestartMouseInactivityTimer();
                        //OnDoubleBtnAction(m_mouseTrigger.ToMouseEvent(), m_mouseModifier.ToMouseEvent(), true);
                        return(true);
                    }
                    // second button was already released, use it again
                    else if (m_mouseExecuteBtn.Action == ExtraMouseActions.Up)
                    {
                        m_mouseExecuteBtn = mouseEvent;
                        Debug.WriteLineIf(DEBUG, "Start Timer OnDoubleBtnAction Notify Only");
                        RestartMouseInactivityTimer();
                        //OnDoubleBtnAction(m_mouseTrigger.ToMouseEvent(), m_mouseModifier.ToMouseEvent(), true);
                        return(true);
                    }
                }
                break;

            case ExtraMouseActions.Up:
                Debug.WriteLineIf(DEBUG, string.Format("{0} button ^UP^ X: {1} Y: {2}", mouseEvent.Button, mouseEvent.Position.X, mouseEvent.Position.Y));

                if (m_mouseMode == MouseMode.Toggle && m_mouseHoldDownBtn.Button == mouseEvent.Button)
                {
                    m_mouseHoldDownBtn = null;
                    m_mouseMode        = MouseMode.None;
                    StopMouseInactivityTimer();
                    //SimulateHiddenAction(ExtraMouseActions.Up, mouseEvent.Position);
                    RaiseMouseEvent(mouseEvent);
                    return(true);
                }
                else if (m_mouseMode == MouseMode.WheelBtn && m_mouseHoldDownBtn.Button == mouseEvent.Button)
                {
                    Debug.WriteLineIf(DEBUG, "Raise OnWheelBtnAction - Hold-down button released");
                    OnWheelBtnAction(m_mouseHoldDownBtn.ToMouseEvent(), ExtraMouseActions.None);
                    m_mouseHoldDownBtn = null;
                    m_mouseMode        = MouseMode.None;
                    return(true);
                }

                //raise event...
                if (m_mouseHoldDownBtn == null)
                {
                    RaiseMouseEvent(mouseEvent);
                    if (isEventCancelled())
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }

                if (m_mouseHoldDownBtn.Button == mouseEvent.Button)
                {
                    StopMouseInactivityTimer();
                    m_cEnableHoldDownBtn.Stop();

                    if (m_mouseExecuteBtn == null)
                    {
                        // mouse click action is raised
                        lock (this)
                        {
                            //RaiseMouseEvent(m_mouseTrigger); //action down
                            //SimulateMouseAction(m_mouseTrigger);
                            //RaiseMouseEvent(mouseEvent); //action up
                            //SimulateMouseAction(mouseEvent.Button, ExtraMouseActions.Click);

                            RaiseMouseEvent(new ExtraMouse(m_mouseHoldDownBtn.Button, ExtraMouseActions.Click, m_mouseHoldDownBtn.Position));
                            if (!isEventCancelled())
                            {
                                SimulateMouseAction(mouseEvent.Button, ExtraMouseActions.Down);
                                System.Threading.Thread.Sleep(10);
                                SimulateMouseAction(mouseEvent.Button, ExtraMouseActions.Up);
                            }
                        }
                        m_mouseHoldDownBtn = null;
                        m_mouseMode        = MouseMode.None;
                        return(true);
                    }
                    else if (m_mouseExecuteBtn.Action == ExtraMouseActions.Down)
                    {
                        Debug.WriteLineIf(DEBUG, "Trigger ^UP^ & Modifier _DOWN_ => Swap MODIFIER & TRIGGER");
                        m_mouseHoldDownBtn = m_mouseExecuteBtn;
                        m_mouseExecuteBtn  = mouseEvent;
                        //m_mouseMode = MouseMode.DoubleBtn;
                        return(true);
                    }
                    else
                    {
                        m_mouseExecuteBtn  = null;
                        m_mouseHoldDownBtn = null;
                        m_mouseMode        = MouseMode.None;
                        return(true);
                    }
                }
                else if (m_mouseExecuteBtn != null)
                {
                    if (m_mouseExecuteBtn.Button == mouseEvent.Button)
                    {
                        StopMouseInactivityTimer();

                        m_mouseExecuteBtn = mouseEvent;
                        if (m_mouseHoldDownBtn != null)
                        {
                            //m_wndUnderCursor = GetWndUnderCursor.FromPoint(mouseEvent.Position);

                            Debug.WriteLineIf(DEBUG, "Raise OnDoubleBtnAction");
                            OnDoubleBtnAction(m_mouseHoldDownBtn.ToMouseEvent(), m_mouseExecuteBtn.ToMouseEvent(), false);
                            //m_mouseModifier = null;
                            return(true);
                        }
                    }
                }
                break;

            case ExtraMouseActions.WheelDown:
            case ExtraMouseActions.WheelUp:
                if (!m_bUsingWheelBtn)
                {
                    return(false);
                }

                if (m_mouseHoldDownBtn != null && m_mouseMode == MouseMode.None)
                {
                    m_mouseMode = MouseMode.WheelBtn;
                    m_cEnableHoldDownBtn.Stop();
                    //m_wndUnderCursor = GetWndUnderCursor.FromPoint(m_mouseTrigger.Position);
                    Debug.WriteLineIf(DEBUG, "Raise OnWheelBtnAction");
                    OnWheelBtnAction(m_mouseHoldDownBtn.ToMouseEvent(), mouseEvent.Action);
                    return(true);
                }
                else if (m_mouseMode == MouseMode.WheelBtn)
                {
                    Debug.WriteLineIf(DEBUG, "Raise OnWheelBtnAction");
                    OnWheelBtnAction(m_mouseHoldDownBtn.ToMouseEvent(), mouseEvent.Action);
                    return(true);
                }
                break;

            case ExtraMouseActions.Move:
                if (m_mouseHoldDownBtn != null && m_mouseMode == MouseMode.None)
                {
                    if (IsDistanceLessThan(m_mouseHoldDownBtn.Position, mouseEvent.Position, m_sensibleZone))
                    {
                        return(false);
                    }

                    if (m_mouseHoldDownBtn.Button == m_btnToggle && m_bUsingClassicCurve)
                    {
                        m_mouseMode = MouseMode.Toggle;
                        m_cEnableHoldDownBtn.Stop();
                        Debug.WriteLineIf(DEBUG, "Mouse start moving & ToggleBtn _DOWN_ => RaiseMouseHookEvent()");
                        OnMouseDownGesture(m_mouseHoldDownBtn.ToMouseEvent());
                        StartMouseInactivityTimer();
                        //m_wndUnderCursor = GetWndUnderCursor.FromPoint(m_mouseTrigger.Position);
                        //SimulateHiddenAction(ExtraMouseActions.Down, m_mouseTrigger.Position);
                        //return true;
                    }
                    else
                    {
                        m_mouseMode = MouseMode.None;
                        m_cEnableHoldDownBtn.Stop();
                        ExtraMouse mouseTemp = new ExtraMouse(m_mouseHoldDownBtn);     //backup mouse trigger so it can be changed during this process
                        RaiseMouseEvent(mouseTemp);
                        if (!isEventCancelled())
                        {
                            SimulateMouseAction(mouseTemp);
                        }
                        m_mouseHoldDownBtn = null;
                    }
                }
                else if (m_mouseMode == MouseMode.Toggle)
                {
                    m_pCurrentPosition = mouseEvent.Position;
                }
                break;
            }

            if (code == Win32.HC_ACTION)
            {
                RaiseMouseEvent(mouseEvent);
            }

            return(false);
        }
コード例 #11
0
 private void RaiseMouseEvent(ExtraMouse mouse)
 {
     if (mouse.Action != ExtraMouseActions.Move)
         Debug.WriteLineIf(DEBUG, string.Format("RaiseMouseEvent button: {0}, action {1}", mouse.Button, mouse.Action));
     MouseEventArgs args = mouse.ToMouseEvent();
     if (mouse.Button == ExtraMouseBtns.Wheel)
     {
         OnMouseWheel(args);
     }
     else
     {
         switch (mouse.Action)
         {
             case ExtraMouseActions.Down:
                 OnMouseDown(args);
                 break;
             case ExtraMouseActions.Click:
                 OnMouseClick(args);
                 break;
             case ExtraMouseActions.Up:
                 OnMouseUp(args);
                 break;                    
             case ExtraMouseActions.DoubleClick:
                 OnMouseDoubleClick(args);
                 break;
             case ExtraMouseActions.Move:
                 OnMouseMove(args);
                 break;
         }
     }
 }
コード例 #12
0
 public void ForceUninstall()
 {
     Debug.WriteLineIf(DEBUG, "FORCE MANUAL UNINSTALL!");
     Uninstall(m_bThreaded);
     m_cEnableHoldDownBtn.Stop();
     StopMouseInactivityTimer();
     m_mouseMode = MouseMode.None;
     m_mouseHoldDownBtn = null;
     m_mouseExecuteBtn = null;
     m_bShouldInstall = false;
     m_bShouldUninstall = false;
 }
コード例 #13
0
 /// <summary>
 /// Sends information to the system that mouse button is being pressed
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void m_cEnableHoldDownBtn_Tick(object sender, EventArgs e)
 {
     //OnHookStateChanged(false);
     m_cEnableHoldDownBtn.Stop();
     Debug.WriteLineIf(DEBUG, "EnableTrigger_Tick Simulate Trigger button action");
     //inform engine that some button was pushed so the context menu of recognized gestures might be hidden
     ExtraMouse tempMouse = new ExtraMouse(m_mouseHoldDownBtn);            
     RaiseMouseEvent(tempMouse);// new ExtraMouse(ExtraMouseBtns.None, ExtraMouseActions.Down, m_mouseHoldDownBtn.Position));
     if (!isEventCancelled())
         SimulateMouseAction(tempMouse); // action down
     m_mouseHoldDownBtn = null;
 }
コード例 #14
0
        private bool HandleEvent(int code, IntPtr wParam, IntPtr lParam)
        {
            //Debug.WriteLineIf(DEBUG, string.Format("Code: {0} wParam: {1} lParam: {2}", code, wParam, lParam));
            ExtraMouse mouseEvent = new ExtraMouse(wParam, lParam);
            switch (mouseEvent.Action)
            {
                case ExtraMouseActions.Down:
                    Debug.WriteLineIf(DEBUG, string.Format("{0} button _DOWN_ X: {1} Y: {2}", mouseEvent.Button, mouseEvent.Position.X, mouseEvent.Position.Y));
                    if (m_mouseMode == MouseMode.Toggle || m_mouseMode == MouseMode.WheelBtn) return false;
                    if (m_bUsingClassicCurveOnly && mouseEvent.Button != m_btnToggle) break; //raise event

                    if (m_mouseHoldDownBtn == null)
                    {
                        m_mouseHoldDownBtn = mouseEvent;
                        m_cEnableHoldDownBtn.Start();
                        return true;
                    }
                    else
                    {
                        if (!m_bUsingDoublebtn) return false;
                        //m_wndUnderCursor = GetWndUnderCursor.FromPoint(mouseEvent.Position);
                        m_mouseMode = MouseMode.DoubleBtn;
                        
                        // second button has not been pushed yet
                        if (m_mouseExecuteBtn == null)
                        {
                            m_cEnableHoldDownBtn.Stop();
                            m_mouseExecuteBtn = mouseEvent;
                            Debug.WriteLineIf(DEBUG, "Start Timer OnDoubleBtnAction Notify Only");
                            RestartMouseInactivityTimer();                    
                            //OnDoubleBtnAction(m_mouseTrigger.ToMouseEvent(), m_mouseModifier.ToMouseEvent(), true);
                            return true;
                        }
                        // second button was already released, use it again
                        else if (m_mouseExecuteBtn.Action == ExtraMouseActions.Up)
                        {
                            m_mouseExecuteBtn = mouseEvent;
                            Debug.WriteLineIf(DEBUG, "Start Timer OnDoubleBtnAction Notify Only");
                            RestartMouseInactivityTimer();
                            //OnDoubleBtnAction(m_mouseTrigger.ToMouseEvent(), m_mouseModifier.ToMouseEvent(), true);
                            return true;
                        }
                    }
                    break;
                case ExtraMouseActions.Up:
                    Debug.WriteLineIf(DEBUG, string.Format("{0} button ^UP^ X: {1} Y: {2}", mouseEvent.Button, mouseEvent.Position.X, mouseEvent.Position.Y));
                    
                    if (m_mouseMode == MouseMode.Toggle && m_mouseHoldDownBtn.Button == mouseEvent.Button)
                    {
                        m_mouseHoldDownBtn = null;
                        m_mouseMode = MouseMode.None;
                        StopMouseInactivityTimer();
                        //SimulateHiddenAction(ExtraMouseActions.Up, mouseEvent.Position);
                        RaiseMouseEvent(mouseEvent);
                        return true;
                    }
                    else if (m_mouseMode == MouseMode.WheelBtn && m_mouseHoldDownBtn.Button == mouseEvent.Button)
                    {
                        Debug.WriteLineIf(DEBUG, "Raise OnWheelBtnAction - Hold-down button released");
                        OnWheelBtnAction(m_mouseHoldDownBtn.ToMouseEvent(), ExtraMouseActions.None);
                        m_mouseHoldDownBtn = null;
                        m_mouseMode = MouseMode.None;                        
                        return true;
                    }

                    //raise event...
                    if (m_mouseHoldDownBtn == null)
                    {
                        RaiseMouseEvent(mouseEvent);
                        if (isEventCancelled())
                            return true;
                        else        
                            return false;
                    }

                    if (m_mouseHoldDownBtn.Button == mouseEvent.Button)
                    {
                        StopMouseInactivityTimer();
                        m_cEnableHoldDownBtn.Stop();
                        
                        if (m_mouseExecuteBtn == null)
                        {
                            // mouse click action is raised
                            lock (this)
                            {
                                //RaiseMouseEvent(m_mouseTrigger); //action down
                                //SimulateMouseAction(m_mouseTrigger);
                                //RaiseMouseEvent(mouseEvent); //action up
                                //SimulateMouseAction(mouseEvent.Button, ExtraMouseActions.Click);

                                RaiseMouseEvent(new ExtraMouse(m_mouseHoldDownBtn.Button, ExtraMouseActions.Click, m_mouseHoldDownBtn.Position));
                                if (!isEventCancelled())
                                {
                                    SimulateMouseAction(mouseEvent.Button, ExtraMouseActions.Down);
                                    System.Threading.Thread.Sleep(10);
                                    SimulateMouseAction(mouseEvent.Button, ExtraMouseActions.Up);
                                }
                            }
                            m_mouseHoldDownBtn = null;
                            m_mouseMode = MouseMode.None;
                            return true;
                        }
                        else if (m_mouseExecuteBtn.Action == ExtraMouseActions.Down)
                        {
                            Debug.WriteLineIf(DEBUG, "Trigger ^UP^ & Modifier _DOWN_ => Swap MODIFIER & TRIGGER");
                            m_mouseHoldDownBtn = m_mouseExecuteBtn;
                            m_mouseExecuteBtn = mouseEvent;
                            //m_mouseMode = MouseMode.DoubleBtn;
                            return true;
                        }
                        else
                        {
                            m_mouseExecuteBtn = null;
                            m_mouseHoldDownBtn = null;
                            m_mouseMode = MouseMode.None;
                            return true;
                        }
                    }
                    else if (m_mouseExecuteBtn != null)
                    {
                        if (m_mouseExecuteBtn.Button == mouseEvent.Button)
                        {
                            StopMouseInactivityTimer();

                            m_mouseExecuteBtn = mouseEvent;
                            if (m_mouseHoldDownBtn != null)
                            {                                
                                //m_wndUnderCursor = GetWndUnderCursor.FromPoint(mouseEvent.Position);

                                Debug.WriteLineIf(DEBUG, "Raise OnDoubleBtnAction");
                                OnDoubleBtnAction(m_mouseHoldDownBtn.ToMouseEvent(), m_mouseExecuteBtn.ToMouseEvent(), false);
                                //m_mouseModifier = null;
                                return true;
                            }
                        }
                    }
                    break;
                case ExtraMouseActions.WheelDown:
                case ExtraMouseActions.WheelUp:
                    if (!m_bUsingWheelBtn) return false;

                    if (m_mouseHoldDownBtn != null && m_mouseMode == MouseMode.None)
                    {
                        m_mouseMode = MouseMode.WheelBtn;
                        m_cEnableHoldDownBtn.Stop();
                        //m_wndUnderCursor = GetWndUnderCursor.FromPoint(m_mouseTrigger.Position);
                        Debug.WriteLineIf(DEBUG, "Raise OnWheelBtnAction");
                        OnWheelBtnAction(m_mouseHoldDownBtn.ToMouseEvent(), mouseEvent.Action);
                        return true;
                    }
                    else if (m_mouseMode == MouseMode.WheelBtn)
                    {
                        Debug.WriteLineIf(DEBUG, "Raise OnWheelBtnAction");
                        OnWheelBtnAction(m_mouseHoldDownBtn.ToMouseEvent(), mouseEvent.Action);
                        return true;
                    }
                    break;
                case ExtraMouseActions.Move:
                    if (m_mouseHoldDownBtn != null && m_mouseMode == MouseMode.None)
                    {
                        if (IsDistanceLessThan(m_mouseHoldDownBtn.Position, mouseEvent.Position, m_sensibleZone))
                            return false;

                        if (m_mouseHoldDownBtn.Button == m_btnToggle && m_bUsingClassicCurve)
                        {
                            m_mouseMode = MouseMode.Toggle;
                            m_cEnableHoldDownBtn.Stop();
                            Debug.WriteLineIf(DEBUG, "Mouse start moving & ToggleBtn _DOWN_ => RaiseMouseHookEvent()");
                            OnMouseDownGesture(m_mouseHoldDownBtn.ToMouseEvent());
                            StartMouseInactivityTimer();
                            //m_wndUnderCursor = GetWndUnderCursor.FromPoint(m_mouseTrigger.Position);
                            //SimulateHiddenAction(ExtraMouseActions.Down, m_mouseTrigger.Position);
                            //return true;
                        }
                        else
                        {
                            m_mouseMode = MouseMode.None;
                            m_cEnableHoldDownBtn.Stop();
                            ExtraMouse mouseTemp = new ExtraMouse(m_mouseHoldDownBtn); //backup mouse trigger so it can be changed during this process
                            RaiseMouseEvent(mouseTemp);
                            if (!isEventCancelled())                                
                                SimulateMouseAction(mouseTemp);                            
                            m_mouseHoldDownBtn = null;
                        }
                    }
                    else if (m_mouseMode == MouseMode.Toggle)
                    {
                        m_pCurrentPosition = mouseEvent.Position;                      
                    }
                    break;
            }

            if (code == Win32.HC_ACTION)
                RaiseMouseEvent(mouseEvent);

            return false;

        }
コード例 #15
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="button"></param>
 /// <returns>True if button was released & event handled</returns>
 private bool CheckAndRelease(ExtraMouse button, IntPtr wParam)
 {
     if (button != null)
     {
         if (button.Action == ExtraMouseActions.Down)
         {
             if (wParam.ToInt32() == ExtraMouse.GetWmValue(button.Button, ExtraMouseActions.Up))
             {
                 Debug.WriteLineIf(DEBUG, string.Format("Button {0} Uninstalled", button.Button));
                 //button = null;                        
                 return true;
             }
         }
         else
         {
             Debug.WriteLineIf(DEBUG, string.Format("Button {0} Uninstalled", button.Button));
             //button = null;
             return true;
         }
     }
     return false;
 }
コード例 #16
0
        /// <summary>
        /// The callback passed to SetWindowsHookEx
        /// </summary>
        /// <param name="code">The action code passed from the hook chain</param>
        /// <param name="wParam">The mouse message being received</param>
        /// <param name="lParam">Message paramters</param>
        /// <returns>return code to hook chain</returns>
        protected int MouseProc(int code, IntPtr wParam, IntPtr lParam)
        {
            // by convention a code < 0 means skip

            if (code < 0)
            {
                return(CallNextHookEx(m_hhook, code, wParam, lParam));
            }
            // Yield to the next hook in the chain

            // used in m_cEnableModdifier_Tick
            m_LParam = lParam;

            if (m_iSimulateCount == 0 && !m_bShouldUninstall && !m_bCrossMode)
            {
                bool handled = HandleEvent(code, wParam, lParam);
                if (handled)
                {
                    return(1);
                }
            }

            if (m_bCrossMode)
            {
                Win32.MouseLLHookStruct mouse = (Win32.MouseLLHookStruct)Marshal.PtrToStructure(lParam, typeof(Win32.MouseLLHookStruct));
                m_pCrossPosition = new Point(mouse.pt.x, mouse.pt.y);
                if (wParam.ToInt32() == Win32.WM_LBUTTONUP)
                {
                    OnCrossLeftMouseUp();
                    //StopCrossMode();
                }
            }

            // if uninstall is called and mouse button is still pressed, then wait until it is released
            if (m_bShouldUninstall)
            {
                if (m_mouseHoldDownBtn != null)
                {
                    if (CheckAndRelease(m_mouseHoldDownBtn, wParam))
                    {
                        if (m_mouseMode == MouseMode.WheelBtn)
                        {
                            //necessary to release some pushed buttons...
                            Debug.WriteLineIf(DEBUG, "Raise OnMouseTabWheel");
                            OnWheelBtnAction(m_mouseHoldDownBtn.ToMouseEvent(), ExtraMouseActions.None);
                        }
                        m_mouseHoldDownBtn = null;
                        TryUninstall();
                        return(1);
                    }
                }
                if (m_mouseExecuteBtn != null)
                {
                    if (CheckAndRelease(m_mouseExecuteBtn, wParam))
                    {
                        m_mouseExecuteBtn = null;
                        TryUninstall();
                        return(1);
                    }
                }
            }

            // pass information about mouse activity to other programs in a the system for further processing
            return(CallNextHookEx(m_hhook, code, wParam, lParam));
        }
コード例 #17
0
 public void SimulateMouseAction(ExtraMouse mouse)
 {
     StartSimulation();
     Debug.WriteLineIf(DEBUG, string.Format("Simulating button: {0}, action: {1} position: ({2},{3})", mouse.Button, mouse.Action, mouse.Position.X, mouse.Position.Y));            
     mouse.SimulateMouseAction();
     StopSimulation();
 }
コード例 #18
0
        /// <summary>
        /// The callback passed to SetWindowsHookEx
        /// </summary>
        /// <param name="code">The action code passed from the hook chain</param>
        /// <param name="wParam">The mouse message being received</param>
        /// <param name="lParam">Message paramters</param>
        /// <returns>return code to hook chain</returns>        
        protected int MouseProc(int code, IntPtr wParam, IntPtr lParam)
        {
            // by convention a code < 0 means skip

            if (code < 0)
                return CallNextHookEx(m_hhook, code, wParam, lParam);
            // Yield to the next hook in the chain

            // used in m_cEnableModdifier_Tick
            m_LParam = lParam;

            if (m_iSimulateCount == 0 && !m_bShouldUninstall && !m_bCrossMode)
            {
                bool handled = HandleEvent(code, wParam, lParam);
                if (handled) return 1;
            }
                
            if (m_bCrossMode)
            {
                Win32.MouseLLHookStruct mouse = (Win32.MouseLLHookStruct)Marshal.PtrToStructure(lParam, typeof(Win32.MouseLLHookStruct));
                m_pCrossPosition = new Point(mouse.pt.x, mouse.pt.y);
                if (wParam.ToInt32() == Win32.WM_LBUTTONUP)
                {
                    OnCrossLeftMouseUp();
                    //StopCrossMode();
                }
            }

            // if uninstall is called and mouse button is still pressed, then wait until it is released
            if (m_bShouldUninstall)
            {
                if (m_mouseHoldDownBtn != null)
                {
                    if (CheckAndRelease(m_mouseHoldDownBtn, wParam))
                    {
                        if (m_mouseMode == MouseMode.WheelBtn)
                        {
                            //necessary to release some pushed buttons...
                            Debug.WriteLineIf(DEBUG, "Raise OnMouseTabWheel");
                            OnWheelBtnAction(m_mouseHoldDownBtn.ToMouseEvent(), ExtraMouseActions.None);
                        }
                        m_mouseHoldDownBtn = null;
                        TryUninstall();
                        return 1;
                    }
                }
                if (m_mouseExecuteBtn != null)
                {
                    if (CheckAndRelease(m_mouseExecuteBtn, wParam))
                    {
                        m_mouseExecuteBtn = null;
                        TryUninstall();
                        return 1;
                    }
                }
            }

            // pass information about mouse activity to other programs in a the system for further processing 
            return CallNextHookEx(m_hhook, code, wParam, lParam);
        }