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); }
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; }
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); } }
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; } }
/// <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; } }