private void Fire_Move(MouseHookEventArgs mea) { if (Move != null) { Move(mea); } }
private void Fire_LeftButtonUp(MouseHookEventArgs mea) { if (LeftButtonUp != null) { LeftButtonUp(mea); } }
private void Fire_RightButtonUp(MouseHookEventArgs mea) { if (RightButtonUp != null) { RightButtonUp(mea); } }
private void Fire_LeftButtonDown(MouseHookEventArgs mea) { if (LeftButtonDown != null) { LeftButtonDown(mea); } }
protected override void OnMouseEvent(MouseEvents mEvent, MouseHookEventArgs mea) { switch (mEvent) { case MouseEvents.LeftButtonUp: Fire_LeftButtonUp(mea); break; case MouseEvents.LeftButtonDown: Fire_LeftButtonDown(mea); break; case MouseEvents.RightButtonUp: Fire_RightButtonUp(mea); break; case MouseEvents.RightButtonDown: Fire_RightButtonDown(mea); break; case MouseEvents.MouseWheel: Fire_MouseWheel(mea); break; case MouseEvents.Move: Fire_Move(mea); break; } }
private void Fire_MouseWheel(MouseHookEventArgs mea) { if (MouseWheel != null) { MouseWheel(mea); } }
public int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { MouseHookStruct messageStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); if (nCode < 0) { return(CallNextHookEx(hHook, nCode, wParam, lParam)); } else { if (HookInvoked != null) { MouseHookEventArgs eventArg = new MouseHookEventArgs { code = nCode, wParam = wParam, lParam = messageStruct }; HookInvoked.BeginInvoke(this, eventArg, null, null); } return(CallNextHookEx(hHook, nCode, wParam, lParam)); } }
protected virtual void OnMouseKeyHook(MouseHookEventArgs e) { if (MouseKeyHook != null) { MouseKeyHook.Invoke(e); } }
private void windowsHook_MouseHook(object sender, MouseHookEventArgs e) { switch (e.Message) { case MouseMessages.LButtonDblClk: case MouseMessages.LButtonDown: case MouseMessages.LButtonUp: case MouseMessages.MButtonDblClk: case MouseMessages.MButtonDown: case MouseMessages.MButtonUp: case MouseMessages.RButtonDblClk: case MouseMessages.RButtonDown: case MouseMessages.RButtonUp: case MouseMessages.XButtonDblClk: case MouseMessages.XButtonDown: if (this.CloseOnMouseClick) { Close(); } break; case MouseMessages.MouseMove: if (this.CloseOnMouseMove) { Close(); } break; } }
private void Overlay_MouseMoved(object sender, MouseHookEventArgs e) { if (_moving && _selectedItem != null) { _selectedItem.MoveTo(e.MouseXPos - _relativeMousePos.X, e.MouseYPos - _relativeMousePos.Y); } }
private bool CompareMouseArgs(MouseHookEventArgs mea1, MouseHookEventArgs mea2) { if (mea1.Location.X != mea2.Location.X) { return(false); } if (mea1.Location.Y != mea2.Location.Y) { return(false); } if (mea1.Alt != mea2.Alt) { return(false); } if (mea1.Ctrl != mea2.Ctrl) { return(false); } if (mea1.Shift != mea2.Shift) { return(false); } return(true); }
private static void hook_MouseDoubleClick(object sender, MouseHookEventArgs e) { if (selectedItem != null) { selectedItem.PerformPick(); } }
protected virtual IntPtr MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode < 0) { Debug.WriteLine("nCode < 0 ??"); return(Native.CallNextHookEx(_hookId, nCode, wParam, lParam)); } //注意:用这个API来过的鼠标位置,不会出现在迅雷上坐标值变为一半的问题。 Native.POINT curPos; Native.GetCursorPos(out curPos); var args = new MouseHookEventArgs((MouseMsg)wParam, curPos.x, curPos.y, wParam, lParam); try { if (MouseHookEvent != null) { MouseHookEvent(args); } } catch (Exception e) { Debug.WriteLine("MouseHookEvent中发生了未处理的异常,并且冒泡到了MouseHookProc。这是不应该出现的。" + e); } return(args.Handled ? new IntPtr(-1) : Native.CallNextHookEx(_hookId, nCode, wParam, lParam)); }
private void MsHook_MouseUp(object sender, MouseHookEventArgs e) { if (e.LeftButton && e.Position.X <= 0.1) { ChangeActiveState(); } }
private bool MouseButtonEventProc(object sender, MouseHookEventArgs e) { if (e.ChangedButton == MouseButtons.Right) { keyBoardHook.Flag = HookFlag.IsRunning; } if (e.ChangedButton == MouseButtons.XButton1) { IntPtr war3 = FindWindow(null, "Warcraft III"); SendMessage(war3, (uint)WM_KEYBOARD.WM_KEYDOWN, (int)_myKeys.XButton1, 0); SendMessage(war3, (uint)WM_KEYBOARD.WM_KEYUP, (int)_myKeys.XButton1, 0); return(true); } else if (e.ChangedButton == MouseButtons.XButton2) { IntPtr war3 = FindWindow(null, "Warcraft III"); SendMessage(war3, (uint)WM_KEYBOARD.WM_KEYDOWN, (int)_myKeys.XButton2, 0); SendMessage(war3, (uint)WM_KEYBOARD.WM_KEYUP, (int)_myKeys.XButton2, 0); return(true); } else if (e.ChangedButton == MouseButtons.Middle) { IntPtr war3 = FindWindow(null, "Warcraft III"); SendMessage(war3, (uint)WM_KEYBOARD.WM_KEYDOWN, (int)_myKeys.MiddleButton, 0); SendMessage(war3, (uint)WM_KEYBOARD.WM_KEYUP, (int)_myKeys.MiddleButton, 0); return(true); } return(false); }
private void MouseHook_StatusChanged(object sender, MouseHookEventArgs e) { var window = System.Windows.Window.GetWindow(_colorPicker); if (window == null) { UpdateCursor(false); return; } if (!_colorPicker.IsMouseOver && window.IsMouseOver) { UpdateCursor(true); if (e.MessageType == MouseHookMessageType.LeftButtonDown) { var brush = new SolidColorBrush(GetColorAt(e.Point.X, e.Point.Y)); _colorPicker.SelectedBrush = brush; } } else { UpdateCursor(false); } }
private void InterceptMouse_MouseEvent(object sender, MouseHookEventArgs e) { if (m_recordingActive && (e.Type == MouseHookEventType.LButtonDown || e.Type == MouseHookEventType.RButtonDown)) { switch (m_recordStep) { case FeedRecordStep.FeedButtonLocation: m_setup.LocationFeedButton = new Point(e.X, e.Y); lblFeedButtonValue.Text = string.Format("X:{0}, Y:{1}", e.X, e.Y); m_recordStep = FeedRecordStep.FeedConfirmButtonLocation; lblText.Text = "Confirm button drücken"; break; case FeedRecordStep.FeedConfirmButtonLocation: m_setup.LocationFeedConfirmButton = new Point(e.X, e.Y); lblConfirmButtonValue.Text = string.Format("X:{0}, Y:{1}", e.X, e.Y); lblText.Text = string.Empty; m_recordingActive = false; MouseHook.Stop(); break; } } }
private void OnMouseEvent(MouseEvents mEvent, MouseHookEventArgs mea) { if (MouseEvent == null) { return; } MouseEvent(mEvent, mea); }
protected virtual void OnMouseEvent(MouseEvents mEvent, MouseHookEventArgs mea) { if (MouseEvent == null) { return; } MouseEvent(mEvent, mea); }
private void MouseHookEvent(object sender, MouseHookEventArgs e) { if (e.MouseMessage == MouseMessages.MouseMove) { } else { TB_Console.AppendText($"当前【{e.MouseMessage}】{Environment.NewLine}"); } }
// // Test methods // public void TriggerMouseAction(MouseEvents mEvent, MouseHookEventArgs mea) { if (!hookInstalled) { string msg = "Mouse trigger cannot be used when the hook is uninstalled."; throw new InvalidOperationException(msg); } OnMouseEvent(mEvent, mea); }
private void WriteMouse(MouseHookEventArgs e) { if (e.MouseEventName == MouseEventNames.MouseWheel) { MouseWriter.Write("{3} : {0}, Direction: {1}{2}", e.MouseEventName, e.ScrollDirection, Environment.NewLine, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")); } else { MouseWriter.Write("{4} : {0}: ({1},{2}){3}", e.MouseEventName, e.Position.X, e.Position.Y, Environment.NewLine, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")); } }
private void ToList(object o, MouseHookEventArgs e) { if (InvokeRequired) { Invoke(_upd, o, e); } else { label1.Text = $"{e.MouseMessage.ToString()} - X:{e.Point.x} Y:{e.Point.y}"; } }
/// <summary> /// Add the specified event to the history. /// </summary> /// <param name="eventArgs">The <see cref="MouseHookEventArgs"/>.</param> private void AddEventToHistory(MouseHookEventArgs eventArgs) { if (HistoryLimit != 0) { if (EventsHistory.Count >= HistoryLimit && EventsHistory.Any()) { EventsHistory.RemoveAt(EventsHistory.Count - 1); } EventsHistory.Insert(0, eventArgs); } }
private void MouseAndKeyboardHookService_MouseAction(object sender, MouseHookEventArgs e) { var mustClose = false; var activeScreen = Screen.FromPoint(new System.Drawing.Point(Cursor.Position.X, Cursor.Position.Y)); var screen = SystemInfoHelper.GetAllScreenInfos().Single(s => s.DeviceName == activeScreen.DeviceName); switch (Settings.Default.PasteBarPosition) { case PasteBarPosition.Top: if (e.Coords.Y - screen.Bounds.Top >= screen.Bounds.Bottom / 2) { if (_canCloseIfMouseMovesAway) { mustClose = true; } } else { _canCloseIfMouseMovesAway = true; } break; case PasteBarPosition.Bottom: if (e.Coords.Y - screen.Bounds.Top <= screen.Bounds.Bottom / 2) { if (_canCloseIfMouseMovesAway) { mustClose = true; } } else { _canCloseIfMouseMovesAway = true; } break; default: throw new ArgumentOutOfRangeException(); } if (mustClose) { if (_mouseAndKeyboardHookService != null) { _mouseAndKeyboardHookService.MouseAction -= MouseAndKeyboardHookService_MouseAction; } Logger.Instance.Information($"Mouse moves away from the paste bar."); var delayer = new Delayer <object>(TimeSpan.FromMilliseconds(10)); delayer.Action += (o, args) => HideBarButtonCommand?.Execute(null); delayer.ResetAndTick(); } }
public static byte[] GetEncodedData(EventClass eventClass, EventType type, HookArgs args, int[] pressedKeys = null, char pressedChar = '\0') { byte[] data = null; using (MemoryStream ms = new MemoryStream()) { ms.WriteByte(GetHeaderByte(eventClass, type, args)); if (eventClass == EventClass.MouseEvent) { MouseHookEventArgs me = args as MouseHookEventArgs; ms.Write(BitConverter.GetBytes((ushort)me.Location.X), 0, 2); ms.Write(BitConverter.GetBytes((ushort)me.Location.Y), 0, 2); //ms.WriteByte((byte)me.Location.X); //ms.WriteByte((byte)me.Location.Y); //System.Windows.Forms.MouseButtons.Right; ms.WriteByte((byte)((int)me.Button >> 20)); byte extra = 0; switch (type) { case EventType.MouseClick: case EventType.MouseDblClick: extra = (byte)me.ClickCount; break; case EventType.MouseWheel: extra = (byte)Math.Abs(me.ScrollAmount); if (me.ScrollAmount < 0) { extra |= 0x80; } break; } ms.WriteByte(extra); } else { KeyHookEventArgs ke = args as KeyHookEventArgs; byte[] pKeys = { 0, 0, 0 }; int len = Math.Min(3, pressedKeys.Length); for (int i = 0; i < len; i++) { pKeys[i] = (byte)pressedKeys[i]; } ms.Write(pKeys, 0, 3); ms.WriteByte((byte)pressedChar); } data = ms.ToArray(); } return(data); }
private void OnMouseHookButtonDown(object sender, MouseHookEventArgs e) { // If the window is visible and the mouse pointer is not // in the bounds of the window, hide the window. if (_isVisible && NativeMethods.GetWindowRect(Handle, out var rect) && !NativeMethods.PtInRect(ref rect, new NativeMethods.POINT { X = e.Point.X, Y = e.Point.Y })) { _ignoreIpcMessages = true; ToggleVisibilityAsync().ContinueWith(_ => _ignoreIpcMessages = false); } }
private void Overlay_MouseDown(object sender, MouseHookEventArgs e) { if (Keyboard.IsKeyDown(Key.LeftShift)) { foreach (OverlayItem item in (this.Content as Canvas).Children) { if (item.IsPointOver(e.MouseXPos, e.MouseYPos)) { _moving = true; _selectedItem = item; _relativeMousePos = Mouse.GetPosition(_selectedItem); return; // Only want to move 1 at a time for overlapping elements } } } }
private void OnMouseAction(object sender, MouseHookEventArgs e) { MouseAction?.Invoke(this, e); if (e.Handled) { return; } if ((e.Action == Enums.MouseAction.LeftButtonPressed && GestureActionButton == MouseButtons.LeftMouseButton) || (e.Action == Enums.MouseAction.RightButtonPressed && GestureActionButton == MouseButtons.RightMouseButton)) { // If left button is pressed, start work IsGestureMaking = true; } else if ((e.Action == Enums.MouseAction.LeftButtonReleased && GestureActionButton == MouseButtons.LeftMouseButton) || e.Action == Enums.MouseAction.RightButtonReleased && GestureActionButton == MouseButtons.RightMouseButton) { // If left button is released, stop work IsGestureMaking = false; if (_mousePointsList.Count > 2) { // Get gesture that was doing var gesture = DetectGesture(); if (!string.Equals(gesture.Name, "-1", StringComparison.Ordinal) && gesture.CheckPoinstArray != null) { var eventArgs = new MouseGestureEventArgs(gesture.Name, gesture.CheckPoinstArray, DateTime.Now.Ticks); AddEventToHistory(eventArgs); e.Handled = true; Logger.Instance.Information($"Mouse gesture detected by {nameof(MouseAndKeyboardHookService)}."); MouseGestureDetected?.Invoke(this, eventArgs); } } _mousePointsList.Clear(); } else if (e.Action == Enums.MouseAction.MouseMove) { // If the mouse is moved, add point to coords list if (IsGestureMaking) { _mousePointsList.Add(e.Coords); } } }
/// <include file='Internal.xml' path='Docs/MouseHook/HookCallback/*'/> protected override bool HookCallback(int code, UIntPtr wparam, IntPtr lparam) { if (MouseEvent == null) { return(false); } MouseHookEventArgs mouseArgs = MouseHookEventArgs.Empty; MouseEvents mEvent = (MouseEvents)wparam.ToUInt32(); switch (mEvent) { case MouseEvents.LeftButtonDown: mouseArgs = GetMousePosition(lparam); break; case MouseEvents.LeftButtonUp: mouseArgs = GetMousePosition(lparam); break; case MouseEvents.MouseWheel: break; case MouseEvents.Move: mouseArgs = GetMousePosition(lparam); break; case MouseEvents.RightButtonDown: mouseArgs = GetMousePosition(lparam); break; case MouseEvents.RightButtonUp: mouseArgs = GetMousePosition(lparam); break; default: //System.Diagnostics.Debug.WriteLine( "Unrecognized mouse event: " + mEvent ); break; } MouseEvent(mEvent, mouseArgs); return(mouseArgs.Cancel); }
private IntPtr MouseHookDelegate(int code, IntPtr wp, IntPtr lp) { if (code == 0) { var mouseHookStruct = (MOUSEHOOKSTRUCT)Marshal.PtrToStructure(lp, typeof(MOUSEHOOKSTRUCT)); var eventArgs = new MouseHookEventArgs(mouseHookStruct.hwnd, (WindowsMessage)wp, mouseHookStruct.pt); var result = false; foreach (var f in OnMouseHook.GetInvocationList()) { if ((bool)f.DynamicInvoke(eventArgs)) { result = true; } } if (result) { return new IntPtr(1); } } return Win32API.CallNextHookEx(hook, code, wp, lp); }
private void OnMove(MouseHookEventArgs e) { if (Move != null) Move(this, e); OnMouseEvent(e); }
void MHookMouseEvent(object sender, MouseHookEventArgs e) { WriteMouse(e); }
/// <summary> /// This is the callback method that is called whenever a low level mouse event is triggered. /// We use it to call our individual custom events. /// </summary> private IntPtr MouseHookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0) { var lParamStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT)); var e = new MouseHookEventArgs(lParamStruct); switch ((MouseMessages)wParam) { case MouseMessages.WmMouseMove: TriggerMouseEvent(e, MouseEventNames.MouseMove, OnMove); break; case MouseMessages.WmLButtonDown: TriggerMouseEvent(e, MouseEventNames.LeftButtonDown, OnLeftButtonDown); break; case MouseMessages.WmLButtonUp: TriggerMouseEvent(e, MouseEventNames.LeftButtonUp, OnLeftButtonUp); break; case MouseMessages.WmRButtonDown: TriggerMouseEvent(e, MouseEventNames.RightButtonDown, OnRightButtonDown); break; case MouseMessages.WmRButtonUp: TriggerMouseEvent(e, MouseEventNames.RightButtonUp, OnRightButtonUp); break; case MouseMessages.WmMButtonDown: TriggerMouseEvent(e, MouseEventNames.MiddleButtonDown, OnMiddleButtonDown); break; case MouseMessages.WmMButtonUp: TriggerMouseEvent(e, MouseEventNames.MouseMove, OnMove); e.MouseEventName = MouseEventNames.MiddleButtonUp; OnMiddleButtonUp(e); break; case MouseMessages.WmMouseWheel: TriggerMouseEvent(e, MouseEventNames.MouseMove, OnMove); e.MouseEventName = MouseEventNames.MouseWheel; OnWheel(e); break; } } return NativeMethods.CallNextHookEx(hookId, nCode, wParam, lParam); }
private void OnWheel(MouseHookEventArgs e) { if (Wheel != null) Wheel(this, e); OnMouseEvent(e); }
private static void TriggerMouseEvent(MouseHookEventArgs e, MouseEventNames name, Action<MouseHookEventArgs> method) { e.MouseEventName = name; method(e); }
private void OnRightButtonUp(MouseHookEventArgs e) { if (RightButtonUp != null) RightButtonUp(this, e); OnMouseEvent(e); }
protected virtual IntPtr MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode < 0) { Debug.WriteLine("nCode < 0 ??"); return Native.CallNextHookEx(_hookId, nCode, wParam, lParam); } //注意:用这个API来过的鼠标位置,不会出现在迅雷上坐标值变为一半的问题。 Native.POINT curPos; Native.GetCursorPos(out curPos); var args = new MouseHookEventArgs((MouseMsg)wParam, curPos.x, curPos.y,wParam,lParam); try { if (MouseHookEvent != null) { MouseHookEvent(args); } } catch(Exception e) { Debug.WriteLine("MouseHookEvent中发生了未处理的异常,并且冒泡到了MouseHookProc。这是不应该出现的。"+e); } return args.Handled ? new IntPtr(-1) : Native.CallNextHookEx(_hookId, nCode, wParam, lParam); }
private void OnMouseEvent(MouseHookEventArgs e) { if (MouseEvent != null) MouseEvent(this, e); }
private void OnMiddleButtonUp(MouseHookEventArgs e) { if (MiddleButtonUp != null) MiddleButtonUp(this, e); OnMouseEvent(e); }
private void OnLeftButtonUp(MouseHookEventArgs e) { if (LeftButtonUp != null) LeftButtonUp(this, e); OnMouseEvent(e); }