Example #1
0
        public int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            MouseHookStruct messageStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));

            if (nCode < 0)
            {
                return(CallNextHookEx(hHook, nCode, wParam, lParam));
            }
            else
            {
                if (HookInvoked != null)
                {
                    MouseHookEventArgs eventArg = new MouseHookEventArgs
                    {
                        code   = nCode,
                        wParam = wParam,
                        lParam = messageStruct
                    };

                    HookInvoked.BeginInvoke(this, eventArg, null, null);
                }

                return(CallNextHookEx(hHook, nCode, wParam, lParam));
            }
        }
Example #2
0
        private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            //Marshall the data from the callback.
            MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));

            if (nCode < 0)
            {
                return(CallNextHookEx(hHook, nCode, wParam, lParam));
            }
            else
            {
                //Create a string variable that shows the current mouse coordinates.
                String strCaption = "x = " +
                                    MyMouseHookStruct.pt.x.ToString("d") +
                                    "  y = " +
                                    MyMouseHookStruct.pt.y.ToString("d");
                //You must get the active form because it is a static function.
                //LinkedList<String>  = keyStrokes;
                parent.Text = strCaption;

                //Set the caption of the form.
                keyStrokes.AddLast(strCaption);

                return(CallNextHookEx(hHook, nCode, wParam, lParam));
            }
        }
Example #3
0
 //下面定义键盘处理的委托
 private IntPtr HookCaback(int nCode, IntPtr wParam, IntPtr lParam)//ref KBDLLHOOKSTRUCT lParam
 {
     _lParam = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
     if (nCode >= 0 && isCapture)
     {
         //this.lbMouseX.Text=_lParam.pt.x.ToString();
         //this.lbMouseY.Text = _lParam.pt.y.ToString();
         if ((int)wParam == WM_LBUTTONDOWN)//按下鼠标左键
         {
             pDown       = new Point(_lParam.pt.x, _lParam.pt.y);
             isLeftMDown = true;
             this.timer1.Start();
             return((System.IntPtr) 1);
         }
         else if ((int)wParam == WM_LBUTTONUP)//松开鼠标左键
         {
             isLeftMDown = false;
             this.timer1.Stop();
             RedrawWindow(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, 0x85);
             pUp    = new Point(_lParam.pt.x, _lParam.pt.y);
             tStart = new ThreadStart(DoWork);
             thread = new Thread(tStart);
             thread.Start();
             //CapScreen(pDown,pUp);
             return((System.IntPtr) 1);
         }
         else if (isLeftMDown && (int)wParam == WM_MOUSEMOVE)
         {
             pNow = new Point(_lParam.pt.x, _lParam.pt.y);
         }
     }
     //事件未被处理,把它传递给下一个程序。
     return(CallNextHookEx(hookID_Mouse, nCode, wParam, lParam));
 }
Example #4
0
        private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            if ((nCode >= 0))
            {
                switch (wParam)
                {
                case WM_LBUTTONDOWN:        //左键按下
                    //case WM_LBUTTONUP:    //右键按下
                    //case WM_LBUTTONDBLCLK:   //同时按下
                    Debug.LogError("左键按下");
                    break;

                case WM_RBUTTONDOWN:
                    Debug.LogError("右键按下");
                    break;
                }
                int clickCount = 0;

                if (wParam == WM_LBUTTONDBLCLK || wParam == WM_RBUTTONDBLCLK)
                {
                    clickCount = 2;
                }
                else
                {
                    clickCount = 1;
                }

                //Marshall the data from callback.
                MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
            }
            return(CallNextHookEx(_hMouseHook, nCode, wParam, lParam));
        }
        public int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            //Marshall the data from the callback.
            MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));

            if (nCode < 0)
            {
                return(CallNextHookEx(hHook, nCode, wParam, lParam));
            }
            else
            {
                //Create a string variable that shows the current mouse coordinates.
                String strCaption = "x = " +
                                    MyMouseHookStruct.pt.x.ToString("d") +
                                    "  y = " +
                                    MyMouseHookStruct.pt.y.ToString("d");
                Point.X = MyMouseHookStruct.pt.x;
                Point.Y = MyMouseHookStruct.pt.y;
                newLocation(Point, null);

                //You must get the active form because it is a static function.
                //Form tempForm = Form.ActiveForm;

                //Set the caption of the form.
                //tempForm.Text = strCaption;


                return(CallNextHookEx(hHook, nCode, wParam, lParam));
            }
        }
Example #6
0
        private static int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            //Marshall the data from the callback.
            MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));

            if (nCode < 0)
            {
                return(CallNextHookEx(hHook, nCode, wParam, lParam));
            }
            else
            {
                //Create a string variable that shows the current mouse coordinates.
                String strCaption = "x = " + MyMouseHookStruct.pt.x.ToString("d") + "  y = " + MyMouseHookStruct.pt.y.ToString("d");
                //You must get the active form because it is a static function.
                Form tempForm = Form.ActiveForm;

                //Set the caption of the form.
                tempForm.Text = strCaption;

                if (true)
                {
                    CameraShooter.RECT rr = new Rectangle(0, 0, 10000, 10000);
                    CameraShooter.ClipCursor(ref rr);
                }

                return(CallNextHookEx(hHook, nCode, wParam, lParam));
            }
        }
Example #7
0
        private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            int mousestate = wParam;

            if (mousestate == 513 || mousestate == 514)
            {
                //如果正常运行并且用户要监听鼠标的消息
                MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                //将鼠标事件保存到文件,格式为   录制格式[时间,x,y,状态]。

                /*if (!File.Exists(RecordFile))
                 * {
                 * sw = new StreamWriter(RecordFile);
                 * currentMillis2 = DateTime.Now.Ticks;
                 * }
                 * else
                 *  sw = File.AppendText(RecordFile);*/
                long currentMillis = (DateTime.Now.Ticks - currentMillis2) / 10000;
                sw.Write(currentMillis + ",");
                sw.Write(MyMouseHookStruct.pt.x.ToString());
                sw.Write(",");
                sw.Write(MyMouseHookStruct.pt.y.ToString());
                sw.Write("," + mousestate.ToString());
                sw.WriteLine("");
                //sw.Close();
                //Console.WriteLine(mousestate);
            }
            return(CallNextHookEx(hMouseHook, nCode, wParam, lParam));
        }
Example #8
0
            private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
            {
                MouseHookStruct mouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));

                if (nCode < 0)
                {
                    return(CallNextHookEx(hHook, nCode, wParam, lParam));
                }
                else
                {
                    point = new Point(mouseHookStruct.Point.X, mouseHookStruct.Point.Y);
                    switch ((WM_MOUSE)wParam)
                    {
                    case WM_MOUSE.WM_MOUSEMOVE:
                    {
                        var e = new MouseEventArgs(MouseButtons.None, 0, point.X, point.Y, 0);
                        MouseMoveEvent(this, e);
                        break;
                    }

                    case WM_MOUSE.WM_LBUTTONDOWN:
                    {
                        var e = new MouseEventArgs(MouseButtons.Left, 0, point.X, point.Y, 0);
                        MouseDownEvent(this, e);
                        break;
                    }

                    case WM_MOUSE.WM_LBUTTONUP:
                    {
                        var e = new MouseEventArgs(MouseButtons.Left, 0, point.X, point.Y, 0);
                        MouseUpEvent(this, e);
                        break;
                    }

                    case WM_MOUSE.WM_MOUSEWHEEL:
                    {
                        var e = new MouseEventArgs(MouseButtons.None, 0, point.X, point.Y, (short)((mouseHookStruct.MouseData >> 16) & 0xffff));
                        MouseWheelEvent(this, e);
                        if (shallDock)
                        {
                            return(1);
                        }
                        break;
                    }

                    case WM_MOUSE.WM_MBUTTONUP:
                    {
                        if (shallDock)
                        {
                            shallDock = false;
                            canDock   = false;
                            shadow.ClearShadow();
                        }
                        break;
                    }
                    }
                    return(CallNextHookEx(hHook, nCode, wParam, lParam));
                }
            }
Example #9
0
 int mouseEventCall(int code, int wParam, ref MouseHookStruct lParam)
 {
     if (mouseCallback(lParam.pt, (MouseEventIdentifier)wParam, lParam.time))
     {
         return(1);
     }
     return(CallNextHookEx(mousehook, code, wParam, ref lParam));
 }
Example #10
0
        /// <summary>
        /// 鼠标钩子回调函数
        /// </summary>
        private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            // 假设正常执行而且用户要监听鼠标的消息
            if ((nCode >= 0) && (OnMouseActivity != null))
            {
                MouseButtons button     = MouseButtons.None;
                int          clickCount = 0;

                switch (wParam)
                {
                case WM_LBUTTONDOWN:
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    break;

                case WM_LBUTTONUP:
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    break;

                case WM_LBUTTONDBLCLK:
                    button     = MouseButtons.Left;
                    clickCount = 2;
                    break;

                case WM_RBUTTONDOWN:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    break;

                case WM_RBUTTONUP:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    break;

                case WM_RBUTTONDBLCLK:
                    button     = MouseButtons.Right;
                    clickCount = 2;
                    break;
                }

                // 从回调函数中得到鼠标的信息
                MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                MouseEventArgs  e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0);

                // 假设想要限制鼠标在屏幕中的移动区域能够在此处设置
                // 后期须要考虑实际的x、y的容差
                if (!Screen.PrimaryScreen.Bounds.Contains(e.X, e.Y))
                {
                    //return 1;
                }

                OnMouseActivity(this, e);
            }

            // 启动下一次钩子
            return(CallNextHookEx(_hMouseHook, nCode, wParam, lParam));
        }
Example #11
0
 public int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
 {
     if (nCode >= 0)
     {
         MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
         VM_ActionEvent?.Invoke(MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y);
     }
     return(0);
 }
Example #12
0
        private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            if ((nCode >= 0) && (OnMouseActivity != null))
            {
                MouseButtons button = MouseButtons.None;
                switch (wParam)
                {
                case WM_LBUTTONDOWN:
                    button = MouseButtons.Left;
                    break;

                case WM_RBUTTONDOWN:
                    button = MouseButtons.Right;
                    break;

                case WM_MOUSEWHEEL:
                    button = MouseButtons.Middle;
                    break;
                }
                int clickCount = 0;
                if (button != MouseButtons.None)
                {
                    if (wParam == WM_LBUTTONDBLCLK || wParam == WM_RBUTTONDBLCLK)
                    {
                        clickCount = 2;
                    }
                    else
                    {
                        clickCount = 1;
                    }
                }

                MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                //dumb up mouse up and down scrolling
                int delta = 0;
                if (button == MouseButtons.Middle)
                {
                    if (MyMouseHookStruct.hwnd > 0)
                    {
                        delta = 1;
                    }
                    else
                    {
                        delta = 2;
                    }
                }
                MouseEventArgs e = new MouseEventArgs(
                    button,
                    clickCount,
                    MyMouseHookStruct.pt.x,
                    MyMouseHookStruct.pt.y,
                    delta);
                OnMouseActivity(this, e);
            }
            return(CallNextHookEx(hMouseHook, nCode, wParam, lParam));
        }
Example #13
0
        /// <summary>
        /// 鼠标钩子回调函数
        /// </summary>
        private static int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            // 假设正常执行而且用户要监听鼠标的消息
            if ((nCode >= 0) && (OnMouseActivity != null))
            {
                MouseButtons button     = MouseButtons.None;
                int          clickCount = 0;

                switch (wParam)
                {
                case WM_LBUTTONDOWN:
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    break;

                case WM_LBUTTONUP:
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    break;

                case WM_LBUTTONDBLCLK:
                    button     = MouseButtons.Left;
                    clickCount = 2;
                    break;

                case WM_RBUTTONDOWN:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    break;

                case WM_RBUTTONUP:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    break;

                case WM_RBUTTONDBLCLK:
                    button     = MouseButtons.Right;
                    clickCount = 2;
                    break;
                }
                if (button != MouseButtons.None && clickCount > 0)
                {
                    // 从回调函数中得到鼠标的信息
                    MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                    MouseEventArgs  e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0);
                    OnMouseActivity(null, e);
                }
            }

            // 启动下一次钩子
            int inext = CallNextHookEx(_hMouseHook, nCode, wParam, lParam);

            return(inext);
        }
Example #14
0
        protected override IntPtr OnHookCall(int nCode, IntPtr wParam, IntPtr lParam)
        {
            MouseHookStruct mouseStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
            IntPtr          returnCall  = OnMouseHookCall(nCode, wParam, mouseStruct);

            if ((int)returnCall != 0)
            {
                return(returnCall);
            }

            return(base.OnHookCall(nCode, wParam, lParam));
        }
        public int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0 && sciControl != null)
            {
                //TraceManager.Add(wParam.ToString());
                MouseHookStruct hookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                if (wParam == (IntPtr)513)  //mouseDown
                {
                    clickedPoint.x = hookStruct.pt.x;
                    clickedPoint.y = hookStruct.pt.y;
                }

                if (Control.ModifierKeys == Keys.Control)
                {
                    if (wParam == (IntPtr)514)  //mouseUp
                    {
                        if (currentWord != null)
                        {
                            if (!timer.Enabled)
                            {
                                timer.Start();
                            }
                        }
                    }
                    else
                    {
                        if (((Control.MouseButtons & MouseButtons.Left) > 0))
                        {
                            int dx = Math.Abs(clickedPoint.x - hookStruct.pt.x);
                            int dy = Math.Abs(clickedPoint.y - hookStruct.pt.y);
                            if (currentWord != null && dx > CLICK_AREA || dy > CLICK_AREA)
                            {
                                SetCurrentWord(null);
                            }
                        }
                        else
                        {
                            Point globalPoint = new Point(hookStruct.pt.x, hookStruct.pt.y);
                            Point localPoint  = sciControl.PointToClient(globalPoint);
                            ProcessMouseMove(localPoint);
                        }
                    }
                }
                else
                {
                    if (currentWord != null)
                    {
                        SetCurrentWord(null);
                    }
                }
            }
            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #16
0
        private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            //如果正常运行并且用户要监听鼠标的消息
            if ((nCode >= 0) && (OnMouseActivity != null))
            {
                MouseButtons button     = MouseButtons.None;
                int          clickCount = 0;

                switch (wParam)
                {
                case WM_LBUTTONDOWN:
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    break;

                case WM_LBUTTONUP:
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    break;

                case WM_LBUTTONDBLCLK:
                    button     = MouseButtons.Left;
                    clickCount = 2;
                    break;

                case WM_RBUTTONDOWN:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    break;

                case WM_RBUTTONUP:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    break;

                case WM_RBUTTONDBLCLK:
                    button     = MouseButtons.Right;
                    clickCount = 2;
                    break;
                }

                //从回调函数中得到鼠标的信息
                MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                MouseEventArgs  e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0);
                //if(e.X>700)return 1;//如果想要限制鼠标在屏幕中的移动区域可以在此处设置

                OnMouseActivity(this, e);
            }
            return(CallNextHookEx(hMouseHook, nCode, wParam, lParam));
        }
Example #17
0
        private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            if ((nCode >= 0) && (OnKeyDownEvent != null || OnKeyUpEvent != null || OnKeyPressEvent != null))
            {
                KeyboardHookStruct MyKeyboardHookStruct = (KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct));
                if (OnKeyDownEvent != null && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN))
                {
                    Keys         keyData = (Keys)MyKeyboardHookStruct.vkCode;
                    KeyEventArgs e       = new KeyEventArgs(keyData);
                    OnKeyDownEvent(this, e);
                }

                if (OnKeyPressEvent != null && wParam == WM_KEYDOWN)
                {
                    byte[] keyState = new byte[256];
                    GetKeyboardState(keyState);
                    byte[] inBuffer = new byte[2];
                    if (ToAscii(MyKeyboardHookStruct.vkCode,
                                MyKeyboardHookStruct.scanCode,
                                keyState,
                                inBuffer,
                                MyKeyboardHookStruct.flags) == 1)
                    {
                        KeyPressEventArgs e = new KeyPressEventArgs((char)inBuffer[0]);
                        OnKeyPressEvent(this, e);
                    }
                }

                if (OnKeyUpEvent != null && (wParam == WM_KEYUP || wParam == WM_SYSKEYUP))
                {
                    Keys         keyData = (Keys)MyKeyboardHookStruct.vkCode;
                    KeyEventArgs e       = new KeyEventArgs(keyData);
                    OnKeyUpEvent(this, e);
                }
            }

            if (nCode >= 0 && OnMouseClickedEvent != null)
            {
                MouseHookStruct MyMSLLHOOKSTRUCT = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                if (wParam == WM_LBUTTONDOWN)
                {
                    MouseEventArgs ee = new MouseEventArgs(MouseButtons.Left, 1, MyMSLLHOOKSTRUCT.Point.X, MyMSLLHOOKSTRUCT.Point.Y, 0);
                    OnMouseClickedEvent.BeginInvoke(this, ee, null, null);
                    return(1);
                    //stop calling the next hook, so that mouse click action won't be actually performed.
                }
            }
            return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam));
        }
Example #18
0
        static void WindowsHook_HookMsgChanged(string strHookName, int nCode, IntPtr msg, IntPtr lParam)
        {
            // 假设正常执行而且用户要监听鼠标的消息
            if (nCode >= 0 && OnMouseActivity != null)
            {
                MouseButtons button     = MouseButtons.None;
                int          clickCount = 0;

                switch ((int)msg)
                {
                case WM_LBUTTONDOWN:
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    break;

                case WM_LBUTTONUP:
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    break;

                case WM_LBUTTONDBLCLK:
                    button     = MouseButtons.Left;
                    clickCount = 2;
                    break;

                case WM_RBUTTONDOWN:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    break;

                case WM_RBUTTONUP:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    break;

                case WM_RBUTTONDBLCLK:
                    button     = MouseButtons.Right;
                    clickCount = 2;
                    break;
                }
                if (button != MouseButtons.None && clickCount > 0)
                {
                    // 从回调函数中得到鼠标的信息
                    MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                    MouseEventArgs  e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0);
                    OnMouseActivity(null, e);
                }
            }
        }
Example #19
0
        private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            // if ok and someone listens to our events
            if ((nCode >= 0) && (OnMouseActivity != null))
            {
                MouseButtons button = MouseButtons.None;
                switch (wParam)
                {
                case WM_LBUTTONDOWN:
                    button = MouseButtons.Left;
                    break;

                case WM_LBUTTONUP:
                    //case WM_LBUTTONDBLCLK:
                    button = MouseButtons.Right;
                    break;

                case WM_RBUTTONDOWN:
                    //case WM_RBUTTONUP:
                    //case WM_RBUTTONDBLCLK:
                    button = MouseButtons.Right;
                    break;
                }
                int clickCount = 0;
                if (button != MouseButtons.None)
                {
                    if (wParam == WM_LBUTTONDBLCLK || wParam == WM_RBUTTONDBLCLK)
                    {
                        clickCount = 2;
                    }
                    else
                    {
                        clickCount = 1;
                    }
                }

                //Marshall the data from callback.
                MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                MouseEventArgs  e = new MouseEventArgs(
                    button,
                    clickCount,
                    MyMouseHookStruct.pt.x,
                    MyMouseHookStruct.pt.y,
                    0);
                OnMouseActivity(this, e);
            }
            return(CallNextHookEx(hMouseHook, nCode, wParam, lParam));
        }
Example #20
0
        private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (DesignMode)
            {
                return(CallNextHookEx(hHook, nCode, wParam, lParam));
            }

            //if ((nCode == HC_ACTION) && (wParam == WM_LBUTTONDON))
            if (wParam.ToInt32( ) != WM_LBUTTONDOWN)
            {
                return(CallNextHookEx(hHook, nCode, wParam, lParam));
            }


            //Marshall the data from the callback.
            MouseHookStruct MyMouseHookStruct = ( MouseHookStruct )Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));

            if (nCode < 0)
            {
                return(CallNextHookEx(hHook, nCode, wParam, lParam));
            }
            else
            {
                //Create a string variable that shows the current mouse coordinates.
                Point listPoint    = _list.PointToClient(new Point(MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y));
                Point controlPoint = btnModalityDropDown.PointToClient(new Point(MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y));

                if (_list.Parent != null)
                {
                    if (!_list.DisplayRectangle.Contains(listPoint) &&
                        !btnModalityDropDown.DisplayRectangle.Contains(controlPoint))
                    {
                        System.Windows.Forms.Control parent = GetTopMostControl(  );


                        if (parent != null)
                        {
                            _list.Visible = false;

                            //parent.Controls.Remove ( _list ) ;
                        }
                    }
                }
            }

            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
    private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
    {
        MPlayerInput.Single.MouseEventCallBack();

        if (nCode >= 0 && wParam == (IntPtr)WM_LBUTTONDOWN)
        {
            int vkCode = Marshal.ReadInt32(lParam);
            MPlayerInput.Single.MouseClickCallBack();
            MPlayerInput.Single.MouseLeftClickCallBack();
        }
        if (nCode >= 0 && wParam == (IntPtr)WM_RBUTTONDOWN)
        {
            int vkCode = Marshal.ReadInt32(lParam);
            MPlayerInput.Single.MouseClickCallBack();
            MPlayerInput.Single.MouseRightClickCallBack();
        }

        if (nCode >= 0 && wParam == (IntPtr)WM_LBUTTONUP)
        {
            int vkCode = Marshal.ReadInt32(lParam);
            MPlayerInput.Single.MouseReleaseCallBack();
            MPlayerInput.Single.MouseLeftRelaseCallBack();
        }
        if (nCode >= 0 && wParam == (IntPtr)WM_RBUTTONUP)
        {
            int vkCode = Marshal.ReadInt32(lParam);
            MPlayerInput.Single.MouseReleaseCallBack();
            MPlayerInput.Single.MouseRightRelease();
        }

        if (nCode >= 0 && wParam == (IntPtr)WM_MOUSEMOVE)
        {
            int             vkCode            = Marshal.ReadInt32(lParam);
            MouseHookStruct M_MouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
            Vector3         curMousePos       = new Vector3(-M_MouseHookStruct.pt.x, M_MouseHookStruct.pt.y, 0f);
            if (first)
            {
                lastMousePos = curMousePos;
                first        = false;
            }
            mouseDeltMove = lastMousePos - curMousePos;
            MPlayerInput.Single.MouseMoveCallBack(mouseDeltMove);
            lastMousePos = curMousePos;
        }

        return(CallNextHookEx(_hookID, nCode, wParam, lParam));
    }
Example #22
0
        public int hookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                MouseHookStruct hookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                mousePacket     mp         = new mousePacket();
                switch ((MouseMessages)wParam)
                {
                case MouseMessages.WM_LBUTTONDOWN:
                    mp.flags = (int)MouseEventFlag.MOUSEEVENTF_LEFTDOWN;
                    break;

                case MouseMessages.WM_LBUTTONUP:
                    mp.flags = (int)MouseEventFlag.MOUSEEVENTF_LEFTUP;
                    break;

                case MouseMessages.WM_RBUTTONDOWN:
                    mp.flags = (int)MouseEventFlag.MOUSEEVENTF_RIGHTDOWN;
                    break;

                case MouseMessages.WM_RBUTTONUP:
                    mp.flags = (int)MouseEventFlag.MOUSEEVENTF_RIGHTUP;
                    break;

                case MouseMessages.WM_MOUSEMOVE:
                    if (hookStruct.pt.x < 0)
                    {
                        return(1);
                    }
                    m_pntCurr.x = (int)((double)hookStruct.pt.x / (double)Screen.PrimaryScreen.Bounds.Width * 65535.0d);
                    m_pntCurr.y = (int)((double)hookStruct.pt.y / (double)Screen.PrimaryScreen.Bounds.Height * 65535.0d);
                    return(0);

                case MouseMessages.WM_MOUSEWHEEL:
                    mp.flags = (int)MouseEventFlag.MOUSEEVENTF_WHEEL;
                    mp.y     = (int)(short)(hookStruct.mouseData >> 16);
                    Debug.WriteLine("mouseData : {0}", mp.y);
                    break;
                }

                MouseEvent(mp);
                return(1);
            }

            return(NativeMethods.CallNextHookEx(ms_hHook, nCode, wParam, lParam));
        }
Example #23
0
        /// <summary> 鼠标钩子回调函数
        /// </summary>
        private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            // 如果正常运行并且用户要监听鼠标的消息
            if ((nCode >= 0) && (OnMouseActivity != null))
            {
                MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                bool            ResultHandle      = false;
                OnMouseActivity(MyMouseHookStruct, wParam, lParam.ToInt64(), out ResultHandle);
                if (ResultHandle)
                {
                    return(1);              //1:表示拦截键盘,return 退出
                }
            }

            // 启动下一次钩子
            return(CallNextHookEx(_hMouseHook, nCode, wParam, lParam));
        }
Example #24
0
        private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            if ((nCode >= 0) && (OnMouseActivity != null))
            {
                MouseButtons button     = MouseButtons.None;
                int          clickCount = 0;
                switch (wParam)
                {
                case WM_LBUTTONDOWN:
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    break;

                case WM_LBUTTONUP:
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    break;

                case WM_LBUTTONDBLCLK:
                    button     = MouseButtons.Left;
                    clickCount = 2;
                    break;

                case WM_RBUTTONDOWN:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    break;

                case WM_RBUTTONUP:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    break;

                case WM_RBUTTONDBLCLK:
                    button     = MouseButtons.Right;
                    clickCount = 2;
                    break;
                }

                MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                MouseEventArgs  e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0);
                OnMouseActivity(this, e);
            }
            return(CallNextHookEx(hMouseHook, nCode, wParam, lParam));
        }
Example #25
0
        private MouseEventArgs GetMouseEventArgs(Int32 wParam, IntPtr lParam)
        {
            int          clickCount = 0;
            MouseButtons button     = MouseButtons.None;

            switch (wParam)
            {
            case ConstDefintion.WM_LBUTTONDOWN:
                button     = MouseButtons.Left;
                clickCount = 1;
                break;

            case ConstDefintion.WM_LBUTTONUP:
                button     = MouseButtons.Left;
                clickCount = 1;
                break;

            case ConstDefintion.WM_LBUTTONDBLCLK:
                button     = MouseButtons.Left;
                clickCount = 2;
                break;

            case ConstDefintion.WM_RBUTTONDOWN:
                button     = MouseButtons.Right;
                clickCount = 1;
                break;

            case ConstDefintion.WM_RBUTTONUP:
                button     = MouseButtons.Right;
                clickCount = 1;
                break;

            case ConstDefintion.WM_RBUTTONDBLCLK:
                button     = MouseButtons.Right;
                clickCount = 2;
                break;
            }

            TextHelper.Write($"button:{button.ToString()},clientCount:{clickCount}");;
            // 从回调函数中得到鼠标的信息
            MouseHookStruct mouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));

            return(new MouseEventArgs(button, clickCount, mouseHookStruct.pt.x, mouseHookStruct.pt.y, 0));
        }
Example #26
0
        private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            bool handled = false;

            // if ok and someone listens to our events
            if ((nCode >= 0) && (OnMouseActivity != null))
            {
                MouseHookStruct mouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                handled = OnMouseActivity(this, (MouseMessage)wParam, mouseHookStruct);
            }
            if (handled)
            {
                return(1);
            }
            else
            {
                return(CallNextHookEx(hMouseHook, nCode, wParam, lParam));
            }
        }
Example #27
0
        private static int MouseHookProc(int nCode, int wParam, IntPtr lParam)
        {
            bool processNextHook = true;

            // Verifions si nCode est different de 0 et que nos evenements sont bien attachés
            if ((nCode >= 0) && (cliked != null))
            {
                //Remplissage de la structure MouseLLHookStruct a partir d'un pointeur
                MouseHookStruct mouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));

                //Detection du bouton clicker
                MouseButtons button = MouseButtons.None;
                switch (wParam)
                {
                case WM_LBUTTONDOWN:
                    button = MouseButtons.Left;
                    break;

                case WM_RBUTTONDOWN:
                    button = MouseButtons.Right;
                    break;
                }

                //parametre de notre event
                MouseEventArgs e = new MouseEventArgs(
                    button,
                    1,
                    mouseHookStruct.pt.x,
                    mouseHookStruct.pt.y,
                    0);
                //On appelle notre event
                cliked(e);
            }
            //Si processNextHook == true alors on transmet le click au destinataire, sinon, on le garde pour nous (
            if (processNextHook == true)
            {
                return(CallNextHookEx(hookz, nCode, (IntPtr)wParam, lParam).ToInt32());
            }
            else
            {
                return(1);
            }
        }
Example #28
0
        private IntPtr MouseHookProcedure(int nCode, IntPtr wParam, IntPtr lParam)
        {
            MouseHookStruct mouseStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));

            if (nCode >= 0)
            {
                switch ((MouseMessages)wParam)
                {
                case MouseMessages.WM_LBUTTONDOWN:
                    events.Add(new KeyValuePair <EventArgs, EventDetails>(new MouseData(mouseStruct.point.x, mouseStruct.point.y, 0, (MouseEventFlags.MOUSEEVENTF_LEFTDOWN), (uint)mouseStruct.time, mouseStruct.dwExtraInfo), new EventDetails(EventType.MOUSEEVENT, DelayCounter.Delay)));
                    DelayCounter.ResetDelay();
                    break;

                case MouseMessages.WM_LBUTTONUP:
                    events.Add(new KeyValuePair <EventArgs, EventDetails>(new MouseData(mouseStruct.point.x, mouseStruct.point.y, 0, (MouseEventFlags.MOUSEEVENTF_LEFTUP), (uint)mouseStruct.time, mouseStruct.dwExtraInfo), new EventDetails(EventType.MOUSEEVENT, DelayCounter.Delay)));
                    DelayCounter.ResetDelay();
                    break;

                case MouseMessages.WM_MOUSEMOVE:
                    events.Add(new KeyValuePair <EventArgs, EventDetails>(new MouseData(mouseStruct.point.x, mouseStruct.point.y, 0, (MouseEventFlags.MOUSEEVENTF_ABSOLUTE | MouseEventFlags.MOUSEEVENTF_MOVE), (uint)mouseStruct.time, mouseStruct.dwExtraInfo), new EventDetails(EventType.MOUSEEVENT, DelayCounter.Delay)));
                    DelayCounter.ResetDelay();
                    break;

                case MouseMessages.WM_MOUSEWHEEL:
                    int mouseData = mouseStruct.mouseData;
                    events.Add(new KeyValuePair <EventArgs, EventDetails>(new MouseData(mouseStruct.point.x, mouseStruct.point.y, mouseData, (MouseEventFlags.MOUSEEVENTF_WHEEL), (uint)mouseStruct.time, mouseStruct.dwExtraInfo), new EventDetails(EventType.MOUSEEVENT, DelayCounter.Delay)));
                    DelayCounter.ResetDelay();
                    break;

                case MouseMessages.WM_RBUTTONDOWN:
                    events.Add(new KeyValuePair <EventArgs, EventDetails>(new MouseData(mouseStruct.point.x, mouseStruct.point.y, 0, (MouseEventFlags.MOUSEEVENTF_RIGHTDOWN), (uint)mouseStruct.time, mouseStruct.dwExtraInfo), new EventDetails(EventType.MOUSEEVENT, DelayCounter.Delay)));
                    DelayCounter.ResetDelay();
                    break;

                case MouseMessages.WM_RBUTTONUP:
                    events.Add(new KeyValuePair <EventArgs, EventDetails>(new MouseData(mouseStruct.point.x, mouseStruct.point.y, 0, (MouseEventFlags.MOUSEEVENTF_RIGHTUP), (uint)mouseStruct.time, mouseStruct.dwExtraInfo), new EventDetails(EventType.MOUSEEVENT, DelayCounter.Delay)));
                    DelayCounter.ResetDelay();
                    break;
                }
            }
            return(CallNextHookEx(hookID, nCode, wParam, lParam));
        }
Example #29
0
        private static int MouseHookProc(int a_nCode, int a_wParam, IntPtr a_lParam)
        {
            if (a_nCode >= 0 && s_hookTarget.IsDisposed == false)
            {
                MouseHookStruct mouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(a_lParam, typeof(MouseHookStruct));

                switch (a_wParam)
                {
                case WmMousemove:
                    break;

                case WmLbuttondown:
                    break;

                case WmLbuttonup:
                    break;

                case WmLbuttondblclk:
                    break;

                case WmRbuttondown:
                    break;

                case WmRbuttonup:
                    break;

                case WmRbuttondblclk:
                    break;

                case WmMousewheel:
                    break;

                case WmMousehwheel:
                    break;

                default:
                    return(CallNextHookEx(s_hMouseHook, a_nCode, a_wParam, a_lParam));
                }
            }

            return(CallNextHookEx(s_hMouseHook, a_nCode, a_wParam, a_lParam));
        }
Example #30
0
        private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            //Marshall the data from callback.
            MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));

            // this code requires us to return the next hook
            if (nCode < 0)
            {
                return(Win32.User32.User32API.CallNextHookEx(HookHandle, nCode, wParam, lParam));
            }

            //Create a string variable with shows current mouse. coordinates
            switch ((HookWindowMessage)wParam.ToInt32())
            {
            case HookWindowMessage.WM_LBUTTONDOWN:
                System.Windows.Forms.MessageBox.Show("left down");
                break;

            case HookWindowMessage.WM_LBUTTONUP:
                System.Windows.Forms.MessageBox.Show("left up");
                break;

            case HookWindowMessage.WM_RBUTTONDOWN:
                System.Windows.Forms.MessageBox.Show("right down");
                break;

            case HookWindowMessage.WM_RBUTTONUP:
                System.Windows.Forms.MessageBox.Show("right up");
                break;

            case HookWindowMessage.WM_MOUSEWHEEL:
                System.Windows.Forms.MessageBox.Show("wheel up");
                break;

            case HookWindowMessage.WM_MOUSEMOVE:
                System.Windows.Forms.MessageBox.Show("mouse move");
                break;
            }

            // pass the message on to the next hook
            return(Win32.User32.User32API.CallNextHookEx(HookHandle, nCode, wParam, lParam));
        }
Example #31
0
            private IntPtr MouseHookCallback(int nCode, IntPtr wParam, ref MouseHookStruct lParam)
            {
                if (nCode >= 0)
                {
                    if (userProcMouse != null)
                    {
                        // 鼠标消息
                        const int WM_MOUSEMOVE = 0x200;
                        const int WM_LBUTTONDOWN = 0x201;
                        const int WM_RBUTTONDOWN = 0x204;
                        const int WM_MBUTTONDOWN = 0x207;
                        const int WM_LBUTTONUP = 0x202;
                        const int WM_RBUTTONUP = 0x205;
                        const int WM_MBUTTONUP = 0x208;
                        const int WM_LBUTTONDBLCLK = 0x203;
                        const int WM_RBUTTONDBLCLK = 0x206;
                        const int WM_MBUTTONDBLCLK = 0x209;

                        //设置MouseHookStruct.mouseAction
                        MouseHookStruct.MouseActionEnum mAction = new MouseHookStruct.MouseActionEnum();
                        switch ((int)wParam)
                        {
                            case WM_MOUSEMOVE:
                                mAction = MouseHookStruct.MouseActionEnum.Move;
                                break;
                            case WM_LBUTTONDOWN:
                                mAction = MouseHookStruct.MouseActionEnum.LeftButtonDown;
                                break;
                            case WM_LBUTTONUP:
                                mAction = MouseHookStruct.MouseActionEnum.LeftButtonUp;
                                break;
                            case WM_LBUTTONDBLCLK:
                                mAction = MouseHookStruct.MouseActionEnum.LeftButtonDoubleClick;
                                break;
                            case WM_RBUTTONDOWN:
                                mAction = MouseHookStruct.MouseActionEnum.RightButtonDown;
                                break;
                            case WM_RBUTTONUP:
                                mAction = MouseHookStruct.MouseActionEnum.RightButtonUp;
                                break;
                            case WM_RBUTTONDBLCLK:
                                mAction = MouseHookStruct.MouseActionEnum.RightButtonDoubleClick;
                                break;
                            case WM_MBUTTONDOWN:
                                mAction = MouseHookStruct.MouseActionEnum.MiddleButtonDown;
                                break;
                            case WM_MBUTTONUP:
                                mAction = MouseHookStruct.MouseActionEnum.MiddleButtonUp;
                                break;
                            case WM_MBUTTONDBLCLK:
                                mAction = MouseHookStruct.MouseActionEnum.MiddleButtonDoubleClick;
                                break;
                        }
                        lParam.mouseAction = mAction;

                        bool flag = false;
                        userProcMouse(lParam, out flag);
                        if (flag)
                        {
                            return (System.IntPtr)1; //同上
                        }
                    }
                }
                return CallNextHookEx(hookID, nCode, wParam, ref lParam);
            }
Example #32
0
 private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, ref MouseHookStruct lParam);