コード例 #1
0
        public void PrintTree()
        {
            if (Value == '\0')
            {
                return;
            }
            else
            {
                Console.Write(this.Value);
            }

            if (LeftUp != null)
            {
                LeftUp.PrintTree();
            }
            if (RightUp != null)
            {
                RightUp.PrintTree();
            }
            if (LeftDown != null)
            {
                LeftDown.PrintTree();
            }
            if (RightDown != null)
            {
                RightDown.PrintTree();
            }
        }
コード例 #2
0
        public override int HookProcEvent(int nCode, Int32 wParam, IntPtr lParam)
        {
            //如果正常运行并且用户要监听鼠标的消息
            if (nCode >= 0)
            {
                MouseButtons    button            = MouseButtons.None;
                int             clickCount        = 0;
                int             delta             = 0;
                MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                MouseEventArgs  e;
                switch ((int)wParam)
                {
                case Const.WM_LBUTTONDOWN:
                    LastMouseDownTimeSpan = Environment.TickCount;
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    e          = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta);
                    LeftDown?.Invoke(this, e);
                    break;

                case Const.WM_LBUTTONUP:
                    LastMouseDownTimeSpan = Environment.TickCount;
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    e          = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta);
                    LeftUp?.Invoke(this, e);
                    break;

                case Const.WM_MBUTTONDOWN:
                    button     = MouseButtons.Middle;
                    clickCount = 1;
                    e          = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta);
                    MiddleDown?.Invoke(this, e);
                    break;

                case Const.WM_MBUTTONUP:
                    button     = MouseButtons.Middle;
                    clickCount = 1;
                    e          = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta);
                    MiddleUp?.Invoke(this, e);
                    break;

                case Const.WM_RBUTTONDOWN:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    e          = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta);
                    RightDown?.Invoke(this, e);
                    break;

                case Const.WM_RBUTTONUP:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    e          = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta);
                    RightUp?.Invoke(this, e);
                    break;

                case Const.WM_MOUSEWHEEL:
                    if (!mouseLeftDown)
                    {
                        button     = MouseButtons.Middle;
                        clickCount = 0;
                        delta      = MyMouseHookStruct.hWnd >> 16;
                        e          = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta);
                        MouseWheel?.Invoke(this, e);
                    }
                    break;

                case Const.WM_MOUSEMOVE:
                    button     = MouseButtons.None;
                    clickCount = 0;
                    e          = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta);
                    MouseMove?.Invoke(this, e);
                    break;
                }
            }

            return(CallNextHookEx(hwndHook, nCode, wParam, lParam));
        }