public int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { Win32Api.MouseHookStruct MyMouseHookStruct = (Win32Api.MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(Win32Api.MouseHookStruct)); if (nCode >= 0) { this.mouseX = MyMouseHookStruct.pt.x; this.mouseY = MyMouseHookStruct.pt.y; } return(Win32Api.CallNextHookEx(hHook, nCode, wParam, lParam)); }
private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { Win32Api.MouseHookStruct MyMouseHookStruct = (Win32Api.MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(Win32Api.MouseHookStruct)); if (nCode < 0) { return(Win32Api.CallNextHookEx(hHook, nCode, wParam, lParam)); } else { MouseButtons button = MouseButtons.None; int clickCount = 0; switch ((Int32)wParam) { case WM_LBUTTONDOWN: button = MouseButtons.Left; clickCount = 1; MouseDownEvent?.Invoke(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0)); break; //case WM_RBUTTONDOWN: // button = MouseButtons.Right; // clickCount = 1; // MouseDownEvent?.Invoke(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0)); // break; //case WM_MBUTTONDOWN: // button = MouseButtons.Middle; // clickCount = 1; // MouseDownEvent?.Invoke(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0)); // break; //case WM_LBUTTONUP: // button = MouseButtons.Left; // clickCount = 1; // MouseUpEvent?.Invoke(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0)); // break; //case WM_RBUTTONUP: // button = MouseButtons.Right; // clickCount = 1; // MouseUpEvent?.Invoke(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0)); // break; //case WM_MBUTTONUP: // button = MouseButtons.Middle; // clickCount = 1; // MouseUpEvent?.Invoke(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0)); // break; default: break; } //var e = new MouseEventArgs(button, clickCount, point.X, point.Y, 0); //MouseClickEvent(this, e); this.Point = new Point(MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y); return(Win32Api.CallNextHookEx(hHook, nCode, wParam, lParam)); } }
/// <summary> /// 消息处理中心 /// </summary> /// <param name="nCode"></param> /// <param name="wParam"></param> /// <param name="lParam"></param> /// <returns></returns> private int HOOKProcReturn(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0) { //鼠标右键 if (wParam.ToInt32() == 0xa1) { Win32Api.MouseHookStruct MyMouseHookStruct = (Win32Api.MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(Win32Api.MouseHookStruct)); MouseButtons button = MouseButtons.Left; Point point = new Point(MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y); var e = new MouseEventArgs(button, 1, point.X, point.Y, 0); if (null != MouseClickEvent) { MouseClickEvent(this, e); } } } //监听下一次事件 return(CallNextHookEx(m_Hook, nCode, wParam, lParam)); }