Esempio n. 1
0
        private IntPtr MouseHookProc(int code, IntPtr wParam, IntPtr lParam)
        {
            IntPtr       nextHandle = CallNextHookEx(HookHandle, code, wParam, lParam); /*Call下一个钩子*/
            MouseMsg     mouseMsg   = (MouseMsg)wParam;
            MouseButtons mouse;

            switch (mouseMsg)
            {
            case MouseMsg.WM_LBUTTONDOWN:
            case MouseMsg.WM_LBUTTONUP:
                mouse = MouseButtons.Left;
                break;

            case MouseMsg.WM_MBUTTONDOWN:
            case MouseMsg.WM_MBUTTONUP:
                mouse = MouseButtons.Middle;
                break;

            case MouseMsg.WM_RBUTTONDOWN:
            case MouseMsg.WM_RBUTTONUP:
                mouse = MouseButtons.Right;
                break;

            default:
                mouse = MouseButtons.None;
                break;
            }
            if (mouse.Equals(MouseButtons.Right))
            {
                nextHandle = new IntPtr(1);
            }
            return(nextHandle);
        }
Esempio n. 2
0
            public MouseHookEventArgs(MouseMsg msg, int x, int y,IntPtr wParam, IntPtr lParam)
            {
                Msg = msg;
                X = x;
                Y = y;

                this.wParam = wParam;
                this.lParam = lParam;
            }
Esempio n. 3
0
            public MouseHookEventArgs(MouseMsg msg, int x, int y, IntPtr wParam, IntPtr lParam)
            {
                Msg = msg;
                X   = x;
                Y   = y;

                this.wParam = wParam;
                this.lParam = lParam;
            }
Esempio n. 4
0
        public static IntPtr MouseCB(int nCode, IntPtr wParam, IntPtr LParam)
        {
            unsafe
            {
                MouseMsg mm = new MouseMsg();

                MSLLHOOKSTRUCT *mp = (MSLLHOOKSTRUCT *)LParam.ToPointer();

                mm.Dx        = (mp->dx) - m_pos.X;
                mm.Dy        = (mp->dy) - m_pos.Y;
                mm.MouseData = (mp->mouseData) >> 16;

                switch (wParam.ToInt32())
                {
                case (int)MouseEvent.WM_LBUTTONDOWN:
                    mm.Flags = (uint)MouseEventFlags.LeftButtonDown;
                    break;

                case (int)MouseEvent.WM_LBUTTONUP:
                    mm.Flags = (uint)MouseEventFlags.LeftButtonUp;
                    break;

                case (int)MouseEvent.WM_MOUSEMOVE:
                    mm.Flags = (uint)MouseEventFlags.MouseMoved;
                    break;

                case (int)MouseEvent.WM_MOUSEWHEEL:
                    mm.Flags = (uint)MouseEventFlags.Wheel;
                    break;

                case (int)MouseEvent.WM_MOUSEHWHEEL:
                    mm.Flags = (uint)MouseEventFlags.HWheel;
                    break;

                case (int)MouseEvent.WM_RBUTTONDOWN:
                    mm.Flags = (uint)MouseEventFlags.RightButtonDown;
                    break;

                case (int)MouseEvent.WM_RBUTTONUP:
                    mm.Flags = (uint)MouseEventFlags.RightButtonUp;
                    break;
                }

                _Host.EnqueueEventMsg(mm);
            }

            return(new IntPtr(1));
        }
Esempio n. 5
0
        private bool HandleSpecialButtonCombination(MouseMsg msg)
        {
            if (!_captured && msg == MouseMsg.WM_MBUTTONDOWN)
            {
                var mouseSwapped   = Native.GetSystemMetrics(Native.SystemMetric.SM_SWAPBUTTON) != 0;
                var lButtonPressed = Native.GetAsyncKeyState(mouseSwapped ? Keys.RButton : Keys.LButton) < 0;
                var shiftPressed   = Native.GetAsyncKeyState(Keys.ShiftKey) < 0;

                if (lButtonPressed)
                {
                    if (shiftPressed)
                    {
                        Post(WM.GUI_REQUEST, (int)GUI_RequestType.ShowHideTray);
                    }
                    else
                    {
                        Post(WM.GUI_REQUEST, (int)GUI_RequestType.PauseResume);
                    }

                    return(true);
                }
            }
            return(false);
        }
Esempio n. 6
0
            public override void Update()
            {
                base.Update();

                if (_obj is StopComm)
                {
                    Server.State = new AuthenticatedState();
                }
                else if (_obj is KeyMsg)
                {
                    KeyMsg  kMsg   = (KeyMsg)_obj;
                    INPUT[] inputs = new INPUT[1];
                    inputs[0].type     = (uint)InputType.INPUT_KEYBOARD;
                    inputs[0].U.ki.wVk = kMsg.VirtualKey;
                    Console.WriteLine(kMsg.VirtualKey);
                    Console.WriteLine(kMsg.Pressed);
                    if (!kMsg.Pressed)
                    {
                        inputs[0].U.ki.dwFlags = KEYEVENTF.KEYUP;
                    }
                    else
                    {
                        inputs[0].U.ki.dwFlags = 0;
                    }
                    inputs[0].U.ki.time        = 0;
                    inputs[0].U.ki.dwExtraInfo = (UIntPtr)(UInt64)0;
                    WindowsAPI.SendInput(1, inputs, System.Runtime.InteropServices.Marshal.SizeOf(inputs[0]));
                }
                else if (_obj is MouseMsg)
                {
                    MouseMsg mMsg   = (MouseMsg)_obj;
                    INPUT[]  inputs = new INPUT[1];
                    inputs[0].type    = (uint)InputType.INPUT_MOUSE;
                    inputs[0].U.mi.dx = mMsg.Dx;
                    inputs[0].U.mi.dy = mMsg.Dy;
                    MOUSEEVENTF dwFlags = 0;
                    if ((mMsg.Flags & (int)MouseEventFlags.LeftButtonDown) != 0)
                    {
                        dwFlags |= MOUSEEVENTF.LEFTDOWN;
                    }
                    if ((mMsg.Flags & (int)MouseEventFlags.LeftButtonUp) != 0)
                    {
                        dwFlags |= MOUSEEVENTF.LEFTUP;
                    }
                    if ((mMsg.Flags & (int)MouseEventFlags.RightButtonDown) != 0)
                    {
                        dwFlags |= MOUSEEVENTF.RIGHTDOWN;
                    }
                    if ((mMsg.Flags & (int)MouseEventFlags.RightButtonUp) != 0)
                    {
                        dwFlags |= MOUSEEVENTF.RIGHTUP;
                    }
                    if ((mMsg.Flags & (int)MouseEventFlags.MiddleButtonDown) != 0)
                    {
                        dwFlags |= MOUSEEVENTF.MIDDLEDOWN;
                    }
                    if ((mMsg.Flags & (int)MouseEventFlags.MiddleButtonUp) != 0)
                    {
                        dwFlags |= MOUSEEVENTF.MIDDLEUP;
                    }
                    if ((mMsg.Flags & (int)MouseEventFlags.Wheel) != 0)
                    {
                        dwFlags |= MOUSEEVENTF.WHEEL;
                    }
                    if ((mMsg.Flags & (int)MouseEventFlags.HWheel) != 0)
                    {
                        dwFlags |= MOUSEEVENTF.HWHEEL;
                    }
                    if ((mMsg.Flags & (int)MouseEventFlags.MouseMoved) != 0)
                    {
                        dwFlags |= MOUSEEVENTF.MOVE;
                    }
                    inputs[0].U.mi.dwFlags     = dwFlags;
                    inputs[0].U.mi.mouseData   = mMsg.MouseData;
                    inputs[0].U.mi.time        = 0;
                    inputs[0].U.mi.dwExtraInfo = (UIntPtr)(UInt64)0;
                    WindowsAPI.SendInput(1, inputs, System.Runtime.InteropServices.Marshal.SizeOf(inputs[0]));
                }
            }