public static void MouseMove(MouseHooker hooker, MouseMessages message, HookStruct str)
        {
            MouseCatcher m = MouseCatcherRef;

            m.Pattern.Actions.Add("WAIT " + m.GetElapsedTime());
            m.Pattern.Actions.Add(str.pt.x + " " + str.pt.y);
        }
        public static void LeftClickDown(MouseHooker hook, MouseMessages message, HookStruct str)
        {
            MouseCatcher m = MouseCatcherRef;

            if (message == MouseMessages.WM_LBUTTONDOWN)
                m.Pattern.Actions.Add("LEFT_CLICK_DOWN");
        }
        public static void RightClickUp(MouseHooker hook, MouseMessages message, HookStruct str)
        {
            MouseCatcher m = MouseCatcherRef;

            if (message == MouseMessages.WM_RBUTTONUP)
                m.Pattern.Actions.Add("RIGHT_CLICK_UP");
        }
Beispiel #4
0
        private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0 && MouseMessages.WM_LBUTTONDOWN == (MouseMessages)wParam)
            {
                MouseMessages  mouseState = (MouseMessages)wParam;
                MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));

                switch (mouseState)
                {
                case MouseMessages.WM_LBUTTONDOWN:
                    LeftButtonDown(this, new Point(hookStruct.pt.x, hookStruct.pt.y));
                    break;

                case MouseMessages.WM_LBUTTONUP:
                    LeftButtonUp(this, new Point(hookStruct.pt.x, hookStruct.pt.y));
                    break;

                case MouseMessages.WM_RBUTTONDOWN:
                    RightButtonDown(this, new Point(hookStruct.pt.x, hookStruct.pt.y));
                    break;

                case MouseMessages.WM_RBUTTONUP:
                    RightButtonUp(this, new Point(hookStruct.pt.x, hookStruct.pt.y));
                    break;
                }
            }
            return(CallNextHookEx(hookID, nCode, wParam, lParam));
        }
Beispiel #5
0
        public void MouseEventHandler(MouseMessages msg, int x, int y)
        {
            switch (msg)
            {
            case MouseMessages.WM_MOUSEMOVE:
                _chromiumWebBrowser.GetBrowser().GetHost().SendMouseMoveEvent(x, y, false, CefEventFlags.None);
                break;

            case MouseMessages.WM_LBUTTONDOWN:
                _chromiumWebBrowser.GetBrowser().GetHost().SendMouseClickEvent(x, y, MouseButtonType.Left, false, 1, CefEventFlags.None);
                break;

            case MouseMessages.WM_LBUTTONUP:
                _chromiumWebBrowser.GetBrowser().GetHost().SendMouseClickEvent(x, y, MouseButtonType.Left, true, 1, CefEventFlags.None);
                break;

            case MouseMessages.WM_MOUSEWHEEL:
                break;

            case MouseMessages.WM_RBUTTONDOWN:
                _chromiumWebBrowser.GetBrowser().GetHost().SendMouseClickEvent(x, y, MouseButtonType.Right, true, 1, CefEventFlags.None);
                break;

            case MouseMessages.WM_RBUTTONUP:
                _chromiumWebBrowser.GetBrowser().GetHost().SendMouseClickEvent(x, y, MouseButtonType.Right, true, 1, CefEventFlags.None);
                break;
            }
        }
Beispiel #6
0
        private static bool HandleMouseInput(MSLLHOOKSTRUCT strct, MouseMessages mm)
        {
            if (strct.flags != 0 || !Program.isToggled || !(a.minecraft != IntPtr.Zero))
            {
                return(true);
            }
            switch (mm)
            {
            case MouseMessages.WM_LBUTTONDOWN:
                isLeftDown = true;
                PostMessage(a.minecraft, 513u, 0, 0);
                break;

            case MouseMessages.WM_LBUTTONUP:
                isLeftDown = false;
                PostMessage(a.minecraft, 514u, 0, 0);
                break;

            case MouseMessages.WM_RBUTTONDOWN:
                PostMessage(a.minecraft, 516u, 0, 0);
                break;

            case MouseMessages.WM_RBUTTONUP:
                PostMessage(a.minecraft, 517u, 0, 0);
                break;

            default:
                return(true);
            }
            return(false);
        }
Beispiel #7
0
        private bool MessageEquals(MouseMessages mouseMsg, int nCode, IntPtr wParam)
        {
            if (nCode < 0)
            {
                return(false);
            }
            var mParam = (MouseMessages)wParam;

            return(mParam == mouseMsg);
        }
 private void Action(MouseLLHookStruct data, MouseMessages message)
 {
     var strCaption = string.Format("time = {3}, x = {0}, y = {1}, flags = {4}, message = {2}\r\n",
         data.pt.x.ToString("d"),
         data.pt.y.ToString("d"),
         (int)message,
         data.time,
         data.flags);
     var bytes = Encoding.ASCII.GetBytes(strCaption);
     fs.Write(bytes, 0, bytes.Length);
 }
        private void Action(MouseLLHookStruct data, MouseMessages message)
        {
            var strCaption = string.Format("time = {3}, x = {0}, y = {1}, flags = {4}, message = {2}\r\n",
                                           data.pt.x.ToString("d"),
                                           data.pt.y.ToString("d"),
                                           (int)message,
                                           data.time,
                                           data.flags);
            var bytes = Encoding.ASCII.GetBytes(strCaption);

            fs.Write(bytes, 0, bytes.Length);
        }
Beispiel #10
0
            private static IntPtr HookCallback(
                int nCode, IntPtr wParam, IntPtr lParam)
            {
                MouseMessages MSGTP = (MouseMessages)wParam;

                if (nCode >= 0 && (MSGTP == MouseMessages.WM_MOUSEWHEEL || MSGTP == MouseMessages.WM_MOUSEMOVE))
                {
                    MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));
                    MouseAction(null, new MouseEventArgs(NativeMethods.GET_WHEEL_DELTA_WPARAM(hookStruct.mouseData), hookStruct.pt.x, hookStruct.pt.y));
                }
                return(CallNextHookEx(_hookID, nCode, wParam, lParam));
            }
Beispiel #11
0
        private bool CheckMouseMessagesUp(MouseMessages wParam)
        {
            switch (wParam)
            {
            case MouseMessages.WM_LBUTTONUP:
                return(true);

            case MouseMessages.WM_RBUTTONUP:
                return(true);
            }
            return(false);
        }
Beispiel #12
0
        private static void OnMouseDown(MouseMessages message, MouseLowLevelHookStruct mouseInfo)
        {
            var hWnd = User32.WindowFromPoint(mouseInfo.Point);

            var control = Control.FromHandle(hWnd);

            while (control != null)
            {
                if (ignoreHandles.Contains(control.Handle))
                {
                    // Ignore this message
                    return;
                }
                control = control.Parent;
            }

            MouseButtons button;

            if (message == MouseMessages.WM_LBUTTONDOWN ||
                message == MouseMessages.WM_LBUTTONUP)
            {
                button = MouseButtons.Left;
            }
            else if (message == MouseMessages.WM_RBUTTONDOWN ||
                     message == MouseMessages.WM_RBUTTONUP)
            {
                button = MouseButtons.Right;
            }
            else
            {
                // TODO: other events?
                return;
            }

            var mouseEventArgs = new MouseEventArgs(
                button: button,
                clicks: 1,
                x: mouseInfo.Point.X,
                y: mouseInfo.Point.Y,
                delta: 0);

            if (message == MouseMessages.WM_LBUTTONDOWN ||
                message == MouseMessages.WM_RBUTTONDOWN)
            {
                MouseDown?.Invoke(null, mouseEventArgs);
            }
            else if (message == MouseMessages.WM_LBUTTONUP ||
                     message == MouseMessages.WM_RBUTTONUP)
            {
                MouseUp?.Invoke(null, mouseEventArgs);
            }
        }
Beispiel #13
0
        private int MouseHookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            MouseMessages mouseInfo = (MouseMessages)wParam;

            if (nCode >= 0 && ((mouseInfo == MouseMessages.WM_LBUTTONDOWN) || (mouseInfo == MouseMessages.WM_RBUTTONDOWN)))
            {
                LastActivity = DateTime.Now;
                //Debug.WriteLine("MouseHookCallback: " + _currState.ToString() + "\t" + DateTime.Now.ToString() + "\t" + nCode.ToString() + "\t" + wParam + "\t" + lParam);
                //Debug.WriteLine("\t" + hookStruct.flags.ToString() + "\t" + hookStruct.mouseData.ToString() + "\t" + hookStruct.time.ToString());
            }

            return(CallNextHookEx(_mouseHookID, nCode, wParam, lParam));
        }
		internal MouseHookEventArgs(IntPtr wparam, IntPtr lparam)
		{
			if (!Enum.IsDefined(typeof(MouseMessages), wparam.ToInt32()))
				message = MouseMessages.Unknown;
			else
				message = (MouseMessages)wparam.ToInt32();
		
			MOUSEHOOKSTRUCT hs = (MOUSEHOOKSTRUCT)Marshal.PtrToStructure(lparam, typeof(MOUSEHOOKSTRUCT));
			
			point = new Point(hs.pt.x, hs.pt.y);
			hwnd = hs.hwnd;
			hitTestCode = (HitTestCodes)hs.hitTestCode;
			extraInfo = hs.extraInfo;
		}
Beispiel #15
0
        //The funtion called when mouse event occurs
        private static IntPtr MouseProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));// gets the structure pointed at by lParam
                MouseMessages  message    = (MouseMessages)wParam;

                if (MouseMessages.WM_LBUTTONDOWN == message)
                {
                    MouseLBDown(hookStruct);
                }
                if (MouseMessages.WM_LBUTTONUP == message)
                {
                    MouseLBUp(hookStruct);
                }
                if (MouseMessages.WM_RBUTTONDOWN == message)
                {
                    MouseRBDown(hookStruct);
                }
                if (MouseMessages.WM_RBUTTONUP == message)
                {
                    MouseRBUp(hookStruct);
                }
                if (MouseMessages.WM_MOUSEMOVE == message)
                {
                    MouseMove(hookStruct);
                }
                if (MouseMessages.WM_MOUSEWHEEL == message)
                {
                    MouseScroll(hookStruct);
                }
                if (MouseMessages.WM_XBUTTONDOWN == message)
                {
                    MouseXDown(hookStruct);
                }
                if (MouseMessages.WM_XBUTTONUP == message)
                {
                    MouseXUp(hookStruct);
                }
                if (MouseMessages.WM_MBUTTONDOWN == message)
                {
                    MouseMBDown(hookStruct);
                }
                if (MouseMessages.WM_MBUTTONUP == message)
                {
                    MouseMBUp(hookStruct);
                }
            }
            return(CallNextHookEx(_mouseHookID, nCode, wParam, lParam));
        }
 private ButtonType ToButtonType(MouseMessages message)
 {
     if (message == MouseMessages.WM_RBUTTONDOWN || message == MouseMessages.WM_RBUTTONUP)
     {
         return(ButtonType.Right);
     }
     else if (message == MouseMessages.WM_WHEELBUTTONDOWN || message == MouseMessages.WM_WHEELBUTTONUP)
     {
         return(ButtonType.Wheel);
     }
     else
     {
         return(ButtonType.Left);
     }
 }
Beispiel #17
0
 internal MouseHookEventArgs(System.IntPtr wparam, System.IntPtr lparam)
 {
     if (!System.Enum.IsDefined(typeof(MouseMessages), (int) wparam.ToInt32()))
     {
         this.message = MouseMessages.Unknown;
     }
     else
     {
         this.message = (MouseMessages) wparam.ToInt32();
     }
     MOUSEHOOKSTRUCT mousehookstruct = (MOUSEHOOKSTRUCT) System.Runtime.InteropServices.Marshal.PtrToStructure(lparam, typeof(MOUSEHOOKSTRUCT));
     this.point = new System.Drawing.Point(mousehookstruct.pt.x, mousehookstruct.pt.y);
     this.hwnd = mousehookstruct.hwnd;
     this.hitTestCode = (HitTestCodes) mousehookstruct.hitTestCode;
     this.extraInfo = mousehookstruct.extraInfo;
 }
Beispiel #18
0
        internal MouseHookEventArgs(IntPtr wparam, IntPtr lparam)
        {
            if (!Enum.IsDefined(typeof(MouseMessages), wparam.ToInt32()))
            {
                message = MouseMessages.Unknown;
            }
            else
            {
                message = (MouseMessages)wparam.ToInt32();
            }

            MOUSEHOOKSTRUCT hs = (MOUSEHOOKSTRUCT)Marshal.PtrToStructure(lparam, typeof(MOUSEHOOKSTRUCT));

            point       = new Point(hs.pt.x, hs.pt.y);
            hwnd        = hs.hwnd;
            hitTestCode = (HitTestCodes)hs.hitTestCode;
            extraInfo   = hs.extraInfo;
        }
        private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                MouseMessages  message    = (MouseMessages)Marshal.ReadInt32(wParam);
                MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));

                this.Event(
                    this,
                    new MouseEventArgs(
                        hookStruct.pt.X,
                        hookStruct.pt.Y,
                        hookStruct.flags,
                        hookStruct.mouseData,
                        hookStruct.time,
                        message.GetName()));
            }

            return(Interop.CallNextHookEx(this.hookPointer, nCode, wParam, lParam));
        }
        public static void sendMouseClick(int hwnd, MouseMessages m, int x, int y)
        {
            //SetForegroundWindow(hwnd);
            bool sent = false;

            switch (m)
            {
            case MouseMessages.WM_LBUTTONUP:
                sent = PostMessage(hwnd, MouseMessages.WM_LBUTTONUP, 0x00000000, MakeLParam(x, y));
                break;

            case MouseMessages.WM_LBUTTONDOWN:
                sent = PostMessage(hwnd, MouseMessages.WM_LBUTTONDOWN, 0x00000001, MakeLParam(x, y));
                break;
            }
            if (sent == false)
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }
        }
Beispiel #21
0
        private int HookCallBack(int nCode, int wParam, int lParam)
        {
            //Marshall the data from the callback.
            MouseHookStruct CurrentMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure((IntPtr)lParam, typeof(MouseHookStruct));
            MouseMessages   CurrentMouseMessage    = (MouseMessages)wParam;

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

                MouseAction?.Invoke(CurrentMouseMessage, CurrentMouseHookStruct.pt.x, CurrentMouseHookStruct.pt.y);

                return(CallNextHookEx(hHook, nCode, wParam, lParam));
            }
        }
Beispiel #22
0
        public static string getStateMouse(MouseMessages m)
        {
            string mess = "";

            switch (m)
            {
            case MouseMessages.WM_LBUTTONDOWN:
                mess = "Left Click Down";
                break;

            case MouseMessages.WM_LBUTTONUP:
                mess = "Left Click Up";
                break;

            case MouseMessages.WM_MOUSEMOVE:
                mess = "Move";
                break;

            case MouseMessages.WM_MOUSEWHEEL:
                mess = "Wheel";
                break;

            case MouseMessages.WM_RBUTTONDOWN:
                mess = "Right Click Down";
                break;

            case MouseMessages.WM_RBUTTONUP:
                mess = "Right Click Up";
                break;

            default:
                mess = "Unkown Mouse Action";
                break;
            }

            return(mess);
        }
Beispiel #23
0
 public MouseEventArgs(MouseMessages mouseMessage, Point point)
 {
     this.MouseMessage = mouseMessage;
     this.Point        = point;
 }
Beispiel #24
0
        /// <summary>
        ///  Mouse event hook callback
        /// </summary>
        /// <param name="nCode"></param>
        /// <param name="wParam"></param>
        /// <param name="lParam"></param>
        /// <returns></returns>
        private IntPtr Mouse_HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            try
            {
                if (nCode < 0)
                {
                    return(User32.CallNextHookEx(mouseHookID, nCode, wParam, lParam));
                }

                POINT point = ((MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT))).pt;

                MouseMessages mouseMessage = 0;
                switch ((MouseMessages)wParam)
                {
                case MouseMessages.WM_MOUSEMOVE:
                case MouseMessages.WM_LBUTTONDOWN:
                case MouseMessages.WM_RBUTTONDOWN:
                case MouseMessages.WM_LBUTTONUP:
                case MouseMessages.WM_RBUTTONUP:
                    mouseMessage = (MouseMessages)wParam;
                    break;

                default:
                    // Do not process other events.
                    return(User32.CallNextHookEx(mouseHookID, nCode, wParam, lParam));
                }

                IntPtr hWnd = IntPtr.Zero;
                if (mouseMessage != MouseMessages.WM_MOUSEMOVE)
                { // over form1
                    IntPtr hOwner = tool.getRootOwner(point, out hWnd);
                    if (hOwner == Handle)
                    {
                        // The event happend on Form1, treat it as a mouse move event.
                        mouseMessage = MouseMessages.WM_MOUSEMOVE;
                        // Allow buttons on Form1 to receive clicking immediately.
                        this.Activate();
                    }
                }

                int nowMs = DateTime.Now.Millisecond;
                if (mouseMessage == MouseMessages.WM_MOUSEMOVE &&
                    nowMs - refTimeMs < 200 && nowMs > refTimeMs)
                {
                    // Filter out the mouse move events which happend in 200 ms.
                    return(User32.CallNextHookEx(mouseHookID, nCode, (IntPtr)mouseMessage, lParam));
                }

                // Prepare parementers and raise a local mouse event
                MouseActionEventArgs e = new MouseActionEventArgs(mouseMessage, point, hWnd);
                OnMouseAction(e);

                // Change reference time
                refTimeMs = DateTime.Now.Millisecond;
            }
            catch (Exception e)
            {
                Debug.WriteLine("Error in private IntPtr Mouse_HookCallback(int nCode, IntPtr wParam, IntPtr lParam): " + e.Message);
            }
            return(User32.CallNextHookEx(mouseHookID, nCode, wParam, lParam));
        }
Beispiel #25
0
 public InterceptMouseEventArgs(MouseMessages mouseMessage, Point point)
 {
     MouseMessage = mouseMessage;
     MousePoint   = point;
 }
Beispiel #26
0
 private static uint MouseEventCoverter(MouseMessages msg)
 {
     return((uint)(MouseEvents)Enum.Parse(typeof(MouseEvents), msg.ToString()));
 }
 public MouseActionEventArgs(MouseMessages mouseMessage, POINT point, IntPtr hWnd)
 {
     this.mouseMessage = mouseMessage;
     this.point = point;
     this.hWnd = hWnd;
 }
Beispiel #28
0
 public static extern int CallNextHookEx(IntPtr hhk, int nCode, MouseMessages wParam, [In] MSLLHOOKSTRUCT lParam);
Beispiel #29
0
        //build mouse command
        private static void BuildMouseCommand(IntPtr lParam, MouseMessages mouseMessage)
        {
            MsLlHookStruct hookStruct = (MsLlHookStruct)Marshal.PtrToStructure(lParam, typeof(MsLlHookStruct));

            string mouseEventClickType;

            switch (mouseMessage)
            {
            case MouseMessages.WmLButtonDown:
                mouseEventClickType = "Left Down";
                break;

            case MouseMessages.WmLButtonUp:
                mouseEventClickType = "Left Up";
                break;

            case MouseMessages.WmMButtonDown:
                mouseEventClickType = "Middle Down";
                break;

            case MouseMessages.WmMButtonUp:
                mouseEventClickType = "Middle Up";
                break;

            case MouseMessages.WmMouseMove:
                mouseEventClickType = "None";

                if (_lastMouseMove.ElapsedMilliseconds >= _msResolution)
                {
                    _lastMouseMove.Restart();
                }
                else
                {
                    return;
                }
                break;

            case MouseMessages.WmRButtonDown:
                mouseEventClickType = "Right Down";
                break;

            case MouseMessages.WmRButtonUp:
                mouseEventClickType = "Right Up";
                break;

            default:
                return;
            }

            //return if we do not want to capture mouse moves
            if ((!_performMouseMoveCapture) && (mouseEventClickType == "None"))
            {
                return;
            }

            //return if we do not want to capture mouse clicks
            if ((!_performMouseClickCapture) && (mouseEventClickType != "None"))
            {
                return;
            }

            if ((GeneratedCommands.Count > 1) && (GeneratedCommands[GeneratedCommands.Count - 1] is SendMouseMoveCommand) &&
                mouseEventClickType != "None" && _stopWatch.ElapsedMilliseconds <= 500 &&
                hookStruct.Pt.X == _lastClickHookStruct.Pt.X && hookStruct.Pt.Y == _lastClickHookStruct.Pt.Y)
            {
                var lastCreatedMouseCommand = (SendMouseMoveCommand)GeneratedCommands[GeneratedCommands.Count - 1];

                switch ((GeneratedCommands[GeneratedCommands.Count - 1] as SendMouseMoveCommand).v_MouseClick)
                {
                case "Left Down":
                    if (mouseEventClickType == "Left Up")
                    {
                        lastCreatedMouseCommand.v_MouseClick = "Left Click";
                    }
                    break;

                case "Middle Down":
                    if (mouseEventClickType == "Middle Up")
                    {
                        lastCreatedMouseCommand.v_MouseClick = "Middle Click";
                    }
                    break;

                case "Right Down":
                    if (mouseEventClickType == "Right Up")
                    {
                        lastCreatedMouseCommand.v_MouseClick = "Right Click";
                    }
                    break;

                case "Left Click":
                    if (mouseEventClickType == "Left Down")
                    {
                        lastCreatedMouseCommand.v_MouseClick = "Left Double Click";
                    }
                    break;

                default:
                    break;
                }
            }
            else
            {
                //build a pause command to track pause since last command
                BuildPauseCommand();

                //define new mouse command
                var mouseMove = new SendMouseMoveCommand
                {
                    v_XMousePosition = hookStruct.Pt.X.ToString(),
                    v_YMousePosition = hookStruct.Pt.Y.ToString(),
                    v_MouseClick     = mouseEventClickType
                };

                if (mouseEventClickType != "None")
                {
                    IntPtr winHandle = WindowFromPoint(hookStruct.Pt);
                    _ = GetWindowText(winHandle, _buffer, _buffer.Capacity);
                    var windowName = _buffer.ToString();

                    mouseMove.v_Comment = "Clicked On Window: " + windowName;
                }

                GeneratedCommands.Add(mouseMove);
            }

            _lastClickHookStruct = hookStruct;
        }
Beispiel #30
0
 public MouseActionEventArgs(MouseMessages mouseMessage, POINT point, IntPtr hWnd)
 {
     this.mouseMessage = mouseMessage;
     this.point        = point;
     this.hWnd         = hWnd;
 }
Beispiel #31
0
        public static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                MouseMessages  mouseMessage = (MouseMessages)wParam;
                MSLLHOOKSTRUCT hookStruct   = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));

                // Translate mouse button into key code and action (press / release)
                VirtualKeyCode keyCode;
                MouseButtons   mouseButton;
                ButtonStates   buttonState = ButtonStates.Press;
                WheelMoves     wheelMove   = WheelMoves.None;

                // Switch could be refactored into a lookup table to make this cleaner
                // Translate mouse messages into something Glue can use
                switch (mouseMessage)
                {
                case MouseMessages.WM_LBUTTONDBLCLK:
                case MouseMessages.WM_LBUTTONDOWN:
                    keyCode     = VirtualKeyCode.LBUTTON;
                    mouseButton = MouseButtons.Left;

                    LOGGER.Info(String.Format("Click at ({0}, {1})", hookStruct.pt.x, hookStruct.pt.y));
                    break;

                case MouseMessages.WM_LBUTTONUP:
                    keyCode     = VirtualKeyCode.LBUTTON;
                    mouseButton = MouseButtons.Left;
                    buttonState = ButtonStates.Release;
                    break;

                case MouseMessages.WM_RBUTTONDOWN:
                case MouseMessages.WM_RBUTTONDBLCLK:
                    keyCode     = VirtualKeyCode.RBUTTON;
                    mouseButton = MouseButtons.Right;
                    break;

                case MouseMessages.WM_RBUTTONUP:
                    keyCode     = VirtualKeyCode.RBUTTON;
                    mouseButton = MouseButtons.Right;
                    buttonState = ButtonStates.Release;
                    break;

                case MouseMessages.WM_MBUTTONDOWN:
                case MouseMessages.WM_MBUTTONDBLCLK:
                    keyCode     = VirtualKeyCode.MBUTTON;
                    mouseButton = MouseButtons.Middle;
                    buttonState = ButtonStates.Press;
                    break;

                case MouseMessages.WM_MBUTTONUP:
                    keyCode     = VirtualKeyCode.MBUTTON;
                    mouseButton = MouseButtons.Middle;
                    buttonState = ButtonStates.Release;
                    break;

                case MouseMessages.WM_XBUTTONDOWN:
                case MouseMessages.WM_XBUTTONDBLCLK:
                    keyCode     = GetXButtonKeyCode(hookStruct);
                    mouseButton = GetXButtonMouse(hookStruct);
                    break;

                case MouseMessages.WM_XBUTTONUP:
                    keyCode     = GetXButtonKeyCode(hookStruct);
                    mouseButton = GetXButtonMouse(hookStruct);
                    buttonState = ButtonStates.Release;
                    break;

                case MouseMessages.WM_MOUSEWHEEL:
                    if (unchecked ((short)((long)hookStruct.mouseData >> 16)) > 0)
                    {
                        wheelMove = WheelMoves.Up;
                    }
                    else
                    {
                        wheelMove = WheelMoves.Down;
                    }
                    keyCode     = 0;
                    mouseButton = MouseButtons.None;
                    break;

                case MouseMessages.WM_MOUSEMOVE:
                default:
                    keyCode     = 0;
                    mouseButton = MouseButtons.None;
                    buttonState = ButtonStates.Release;
                    break;
                }

                // Mouse buttons are handled like keyboard keys
                if (mouseMessage != MouseMessages.WM_MOUSEMOVE)
                {
                    if (KeyboardHandler.BroadcastKeyboardEvent((int)keyCode, buttonState))
                    {
                        // Eat mouse message if any event listener says to do so
                        return(new IntPtr(1));
                    }
                }

                // All mouse events go on the mouse bus
                if (BroadcastMouseEvent(new EventMouse(mouseButton, buttonState, wheelMove, hookStruct.pt.x, hookStruct.pt.y)))
                {
                    return(new IntPtr(1));
                }
            }

            // Freeze the mouse if mouse safety is toggled (and not using filter driver)
            if (!Tube.InterceptorDriverInput.IsLoaded &&
                Tube.MouseLocked)
            {
                return(new IntPtr(1));
            }

            return(new IntPtr(0));
        }
 private static extern bool PostMessage(int hWnd, MouseMessages Msg, int wParam, int lParam);
Beispiel #33
0
 public MouseLeftEventChangeArgs(MouseMessages msg)
 {
     message = msg;
 }
Beispiel #34
0
        private void msHook_MouseIntercepted(int msg, ManagedWinapi.Windows.POINT pt, int mouseData, int flags, int time, IntPtr dwExtraInfo, ref bool handled)
        {
            MouseEvents   evt          = 0;
            Win32Input    input        = new Win32Input();
            MouseMessages mouseMessage = (MouseMessages)msg;

            input.type         = 0;
            input.mi           = new MouseInput();
            input.mi.dx        = (int)(pt.X * (65535f / (Screen.PrimaryScreen.Bounds.Width)));
            input.mi.dy        = (int)(pt.Y * (65535f / Screen.PrimaryScreen.Bounds.Height));
            input.mi.mouseData = 0;
            switch (mouseMessage)
            {
            case MouseMessages.WM_MOUSEMOVE:
                evt = MouseEvents.MOVE;
                break;

            case MouseMessages.WM_LBUTTONDOWN:
                evt = MouseEvents.LEFTDOWN;
                break;

            case MouseMessages.WM_LBUTTONUP:
                evt = MouseEvents.LEFTUP;
                break;

            case MouseMessages.WM_MBUTTONDOWN:
                evt = MouseEvents.MIDDLEDOWN;
                break;

            case MouseMessages.WM_MBUTTONUP:
                evt = MouseEvents.MIDDLEUP;
                break;

            case MouseMessages.WM_RBUTTONDOWN:
                evt = MouseEvents.RIGHTDOWN;
                break;

            case MouseMessages.WM_RBUTTONUP:
                evt = MouseEvents.RIGHTUP;
                break;

            case MouseMessages.WM_MOUSEWHEEL:
            case MouseMessages.WM_MOUSEHWHEEL:
                evt = MouseEvents.WHEEL;
                input.mi.mouseData = (uint)(mouseData >> 16);
                break;

            case MouseMessages.WM_XBUTTONDOWN:
                evt = MouseEvents.XDOWN;
                input.mi.mouseData = (uint)(mouseData >> 16);
                break;

            case MouseMessages.WM_XBUTTONUP:
                evt = MouseEvents.XUP;
                input.mi.mouseData = (uint)(mouseData >> 16);
                break;

            default:
                break;
            }
            evt |= MouseEvents.ABSOLUTE;
            input.mi.dwFlags     = (uint)evt;
            input.mi.time        = 0;
            input.mi.dwExtraInfo = IntPtr.Zero;

            macroEntries.Add(new MacroRecordEntry(input, watch.ElapsedMilliseconds));
        }
Beispiel #35
0
            //build mouse command
            private static void BuildMouseCommand(IntPtr lParam, MouseMessages mouseMessage)
            {
                string mouseEventClickType = string.Empty;

                switch (mouseMessage)
                {
                case MouseMessages.WM_LBUTTONDOWN:
                    mouseEventClickType = "Left Down";
                    break;

                case MouseMessages.WM_LBUTTONUP:
                    mouseEventClickType = "Left Up";
                    break;

                case MouseMessages.WM_MOUSEMOVE:
                    mouseEventClickType = "None";



                    if (lastMouseMove.ElapsedMilliseconds >= msResolution)
                    {
                        lastMouseMove.Restart();
                    }
                    else
                    {
                        return;
                    }


                    break;

                case MouseMessages.WM_RBUTTONDOWN:
                    mouseEventClickType = "Right Down";
                    break;

                case MouseMessages.WM_RBUTTONUP:
                    mouseEventClickType = "Right Up";
                    break;

                default:
                    return;
                }

                ////return if non matching event
                //if (mouseEventClickType == string.Empty)
                //    return;



                //return if we do not want to capture mouse moves
                if ((!performMouseMoveCapture) && (mouseEventClickType == "None"))
                {
                    return;
                }

                //return if we do not want to capture mouse clicks
                if ((!performMouseClickCapture) && (mouseEventClickType != "None"))
                {
                    return;
                }

                //build a pause command to track pause since last command
                BuildPauseCommand();


                //define new mouse command
                MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));



                var mouseMove = new Core.Automation.Commands.SendMouseMoveCommand
                {
                    v_XMousePosition = hookStruct.pt.x.ToString(),
                    v_YMousePosition = hookStruct.pt.y.ToString(),
                    v_MouseClick     = mouseEventClickType
                };

                if (mouseEventClickType != "None")
                {
                    IntPtr winHandle = WindowFromPoint(hookStruct.pt);

                    int length     = GetWindowText(winHandle, _Buffer, _Buffer.Capacity);
                    var windowName = _Buffer.ToString();

                    mouseMove.v_Comment = "Clicked On Window: " + windowName;
                }

                generatedCommands.Add(mouseMove);
            }
Beispiel #36
0
 public MouseEventArgs(MouseMessages mouseMessage)
 {
     this.MouseMessage = mouseMessage;
 }