Example #1
0
 void ll_MessageIntercepted(LowLevelMessage m, ref bool handled)
 {
     if (state == MacroState.RECORDING)
     {
         m.Time = lastTickCount;
         lastTickCount = 0;
     }
     else if (state == MacroState.RECORDING_DELAY)
     {
         int ltc = lastTickCount;
         lastTickCount = m.Time;
         m.Time -= ltc;
     }
     else
     {
         MessageBox.Show("Error: Invalid state");
     }
     llmacro.Add(m);
 }
Example #2
0
        private void OnMessageIntercepted(LowLevelMessage lowLevelMessage, ref bool handled)
        {
            var keyboardMessage = lowLevelMessage as LowLevelKeyboardMessage;
            if (handled || keyboardMessage == null)
            {
                return;
            }

            if (!IsAltTabKeyCombination(keyboardMessage))
            {
                return;
            }

            var shiftKeyDown = (_shiftKey.AsyncState & 32768) != 0; // is held down
            Trace.WriteLine("Shiftkey: " + shiftKeyDown);

            var eventArgs = OnPressed(shiftKeyDown);

            handled = eventArgs.Handled;
        }
Example #3
0
        public static void MouseHook(LowLevelMessage evt, ref bool handled)
        {
            LowLevelMouseMessage mevt = evt as LowLevelMouseMessage;
            if (mevt != null)
            {
                MouseButtons moveMouseState = OptionsManager.MoveOptions.mouseButton;
                MouseButtons resizeMouseState = OptionsManager.ResizeOptions.mouseButton;

                switch ((MouseState)mevt.Message)
                {
                    case MouseState.WM_LBUTTONDOWN:
                    case MouseState.WM_RBUTTONDOWN:
                    case MouseState.WM_MBUTTONDOWN:
                        // Get the window to move or resize
                        _currentWindow = GetTopLevel(SystemWindow.FromPoint(mevt.Point.X, mevt.Point.Y));

                        if (TestMoveKeyModifier() && TestMoveMouseState(mevt))
                        {
                            // Now we are moving...
                            _isMoving = true;

                            //... from here to somewhere.
                            _previousPoint = mevt.Point;

                            // Set cursor
                            SystemCursor.SetSystemCursor(Cursors.SizeAll);

                            // Prevent event to be forwarded
                            handled = true;
                        }
                        // Check that:
                        // - we are allowed to resize
                        // - we are not moving
                        // - keys and mouse buttons respect the options
                        else if (_currentWindow.Resizable && !_isMoving && TestResizeKeyModifier() && TestResizeMouseState(mevt))
                        {
                            // Now we are resizing...
                            _isResizing = true;

                            //... from this point/quarter.
                            _previousPoint = mevt.Point;
                            _clickedQuarter = GetQuarterFromPoint(_currentWindow, mevt.Point);

                            // Set cursor
                            if ((_clickedQuarter == WindowsQuarter.DIR_NW) || (_clickedQuarter == WindowsQuarter.DIR_SE))
                                SystemCursor.SetSystemCursor(Cursors.SizeNWSE);
                            else if ((_clickedQuarter == WindowsQuarter.DIR_NE) || (_clickedQuarter == WindowsQuarter.DIR_SW))
                                SystemCursor.SetSystemCursor(Cursors.SizeNESW);

                            // Prevent event to be forwarded
                            handled = true;
                        }
                        break;

                    case MouseState.WM_MOUSEMOVE:
                        if (_isMoving)
                        {
                            int dx = mevt.Point.X - _previousPoint.X;
                            int dy = mevt.Point.Y - _previousPoint.Y;

                            // Only move not left/right snaped window
                            if (!_leftSnapedWindows.ContainsKey(_currentWindow) && !_rightSnapedWindows.ContainsKey(_currentWindow))
                                MoveWindow(_currentWindow, dx, dy);

                            _previousPoint = mevt.Point;

                            // Snap/Unsnap
                            SnapTo(_currentWindow, mevt.Point);
                        }
                        else if (_isResizing)
                        {
                            int dx = mevt.Point.X - _previousPoint.X;
                            int dy = mevt.Point.Y - _previousPoint.Y;

                            // Resize current window
                            ResizeWindow(_currentWindow, dx, dy);

                            _previousPoint = mevt.Point;
                        }
                        break;

                    case MouseState.WM_LBUTTONUP:
                    case MouseState.WM_RBUTTONUP:
                    case MouseState.WM_MBUTTONUP:
                        if (TestMoveMouseState(mevt))
                        {
                            if (_isMoving)
                            {
                                // Prevent event to be forwarded
                                handled = true;

                                // Restore cursor
                                SystemCursor.RestoreSystemCursor();
                            }
                            _isMoving = false;
                        }
                        else if (TestResizeMouseState(mevt))
                        {
                            if (_isResizing)
                            {
                                // Prevent event to be forwarded
                                handled = true;

                                // Restore cursor
                                SystemCursor.RestoreSystemCursor();
                            }
                            _isResizing = false;
                        }

                        break;

                    case MouseState.WM_LBUTTONDBLCLK:
                    case MouseState.WM_RBUTTONDBLCLK:
                    case MouseState.WM_MBUTTONDBLCLK:
                        break;

                    case MouseState.WM_MOUSEWHEEL:
                    case MouseState.WM_MOUSEHWHEEL:
                        break;
                }

                //if (message.Length != 0)
                //    Console.WriteLine("[Mouse] msg:" + message
                //                      + " pt:" + "(" + mevt.Point.X + "," + mevt.Point.Y + ")"
                //                      + " mouseData:" + mevt.MouseData
                //                      + " time:" + mevt.Time
                //                      + " dwExtraInfo:" + mevt.ExtraInfo);
            }
        }
Example #4
0
        public static void KeyboardHook(LowLevelMessage evt, ref bool handled)
        {
            LowLevelKeyboardMessage kevt = evt as LowLevelKeyboardMessage;

            // Prevent further code execution when the key stroke hasn't changed
            if (_lastKeyboardMessage != null)
            {
                bool notchanged = (kevt.Message == _lastKeyboardMessage.Message)
                                  && (kevt.VirtualKeyCode == _lastKeyboardMessage.VirtualKeyCode)
                                  && (kevt.KeyboardEventFlags == _lastKeyboardMessage.KeyboardEventFlags)
                                  && (kevt.ExtraInfo == _lastKeyboardMessage.ExtraInfo);

                if (notchanged)
                    return;
            }
            _lastKeyboardMessage = kevt;

            // Get keyboard state
            switch ((KeyboardMessage)kevt.Message)
            {
                case KeyboardMessage.WM_KEYDOWN:
                case KeyboardMessage.WM_SYSKEYDOWN:
                    if (((VirtualKeys)kevt.VirtualKeyCode == VirtualKeys.LeftMenu) || ((VirtualKeys)kevt.VirtualKeyCode == VirtualKeys.RightMenu))
                        _isAltDown = true;
                    if (((VirtualKeys)kevt.VirtualKeyCode == VirtualKeys.LeftShift) || ((VirtualKeys)kevt.VirtualKeyCode == VirtualKeys.RightShift))
                        _isShiftDown = true;
                    if (((VirtualKeys)kevt.VirtualKeyCode == VirtualKeys.LeftControl) || ((VirtualKeys)kevt.VirtualKeyCode == VirtualKeys.RightControl))
                        _isControlDown = true;
                    break;
                case KeyboardMessage.WM_KEYUP:
                case KeyboardMessage.WM_SYSKEYUP:
                    if (((VirtualKeys)kevt.VirtualKeyCode == VirtualKeys.LeftMenu) || ((VirtualKeys)kevt.VirtualKeyCode == VirtualKeys.RightMenu))
                        _isAltDown = false;
                    if (((VirtualKeys)kevt.VirtualKeyCode == VirtualKeys.LeftShift) || ((VirtualKeys)kevt.VirtualKeyCode == VirtualKeys.RightShift))
                        _isShiftDown = false;
                    if (((VirtualKeys)kevt.VirtualKeyCode == VirtualKeys.LeftControl) || ((VirtualKeys)kevt.VirtualKeyCode == VirtualKeys.RightControl))
                        _isControlDown = false;
                    break;
            }
        }
Example #5
0
 /// <summary>
 /// Lls the hook_ message intercepted.
 /// </summary>
 /// <param name="evt">The evt.</param>
 /// <param name="handled">if set to <c>true</c> [handled].</param>
 void llHook_MessageIntercepted(LowLevelMessage evt, ref bool handled)
 {
     uint msg = (uint)evt.Message;
     switch (msg)
     {
         case WM_MOUSEWHEEL:
         case WM_MOUSEHWHEEL:
             if (!LastActionWasWheel)
             {
                 this.EnqueueActivity(new MouseWheel(DateTime.Now, visualizer.GetScore()));
                 LastActionWasWheel = true;
             }
             break;
         case WM_LBUTTONUP:
         case WM_MBUTTONUP:
         case WM_RBUTTONUP:
             this.EnqueueActivity(new MouseClick(DateTime.Now, visualizer.GetScore()));
             LastActionWasWheel = false;
             break;
         case WM_KEYDOWN:
             this.EnqueueActivity(new KeyPress(DateTime.Now, visualizer.GetScore()));
             LastActionWasWheel = false;
             break;
     }
 }