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)); } }
private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { //Marshall the data from the callback. MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); if (nCode < 0) { return(CallNextHookEx(hHook, nCode, wParam, lParam)); } else { //Create a string variable that shows the current mouse coordinates. String strCaption = "x = " + MyMouseHookStruct.pt.x.ToString("d") + " y = " + MyMouseHookStruct.pt.y.ToString("d"); //You must get the active form because it is a static function. //LinkedList<String> = keyStrokes; parent.Text = strCaption; //Set the caption of the form. keyStrokes.AddLast(strCaption); return(CallNextHookEx(hHook, nCode, wParam, lParam)); } }
//下面定义键盘处理的委托 private IntPtr HookCaback(int nCode, IntPtr wParam, IntPtr lParam)//ref KBDLLHOOKSTRUCT lParam { _lParam = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); if (nCode >= 0 && isCapture) { //this.lbMouseX.Text=_lParam.pt.x.ToString(); //this.lbMouseY.Text = _lParam.pt.y.ToString(); if ((int)wParam == WM_LBUTTONDOWN)//按下鼠标左键 { pDown = new Point(_lParam.pt.x, _lParam.pt.y); isLeftMDown = true; this.timer1.Start(); return((System.IntPtr) 1); } else if ((int)wParam == WM_LBUTTONUP)//松开鼠标左键 { isLeftMDown = false; this.timer1.Stop(); RedrawWindow(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, 0x85); pUp = new Point(_lParam.pt.x, _lParam.pt.y); tStart = new ThreadStart(DoWork); thread = new Thread(tStart); thread.Start(); //CapScreen(pDown,pUp); return((System.IntPtr) 1); } else if (isLeftMDown && (int)wParam == WM_MOUSEMOVE) { pNow = new Point(_lParam.pt.x, _lParam.pt.y); } } //事件未被处理,把它传递给下一个程序。 return(CallNextHookEx(hookID_Mouse, nCode, wParam, lParam)); }
private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam) { if ((nCode >= 0)) { switch (wParam) { case WM_LBUTTONDOWN: //左键按下 //case WM_LBUTTONUP: //右键按下 //case WM_LBUTTONDBLCLK: //同时按下 Debug.LogError("左键按下"); break; case WM_RBUTTONDOWN: Debug.LogError("右键按下"); break; } int clickCount = 0; if (wParam == WM_LBUTTONDBLCLK || wParam == WM_RBUTTONDBLCLK) { clickCount = 2; } else { clickCount = 1; } //Marshall the data from callback. MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); } return(CallNextHookEx(_hMouseHook, nCode, wParam, lParam)); }
public int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { //Marshall the data from the callback. MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); if (nCode < 0) { return(CallNextHookEx(hHook, nCode, wParam, lParam)); } else { //Create a string variable that shows the current mouse coordinates. String strCaption = "x = " + MyMouseHookStruct.pt.x.ToString("d") + " y = " + MyMouseHookStruct.pt.y.ToString("d"); Point.X = MyMouseHookStruct.pt.x; Point.Y = MyMouseHookStruct.pt.y; newLocation(Point, null); //You must get the active form because it is a static function. //Form tempForm = Form.ActiveForm; //Set the caption of the form. //tempForm.Text = strCaption; return(CallNextHookEx(hHook, nCode, wParam, lParam)); } }
private static int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { //Marshall the data from the callback. MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); if (nCode < 0) { return(CallNextHookEx(hHook, nCode, wParam, lParam)); } else { //Create a string variable that shows the current mouse coordinates. String strCaption = "x = " + MyMouseHookStruct.pt.x.ToString("d") + " y = " + MyMouseHookStruct.pt.y.ToString("d"); //You must get the active form because it is a static function. Form tempForm = Form.ActiveForm; //Set the caption of the form. tempForm.Text = strCaption; if (true) { CameraShooter.RECT rr = new Rectangle(0, 0, 10000, 10000); CameraShooter.ClipCursor(ref rr); } return(CallNextHookEx(hHook, nCode, wParam, lParam)); } }
private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam) { int mousestate = wParam; if (mousestate == 513 || mousestate == 514) { //如果正常运行并且用户要监听鼠标的消息 MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); //将鼠标事件保存到文件,格式为 录制格式[时间,x,y,状态]。 /*if (!File.Exists(RecordFile)) * { * sw = new StreamWriter(RecordFile); * currentMillis2 = DateTime.Now.Ticks; * } * else * sw = File.AppendText(RecordFile);*/ long currentMillis = (DateTime.Now.Ticks - currentMillis2) / 10000; sw.Write(currentMillis + ","); sw.Write(MyMouseHookStruct.pt.x.ToString()); sw.Write(","); sw.Write(MyMouseHookStruct.pt.y.ToString()); sw.Write("," + mousestate.ToString()); sw.WriteLine(""); //sw.Close(); //Console.WriteLine(mousestate); } return(CallNextHookEx(hMouseHook, nCode, wParam, lParam)); }
private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { MouseHookStruct mouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); if (nCode < 0) { return(CallNextHookEx(hHook, nCode, wParam, lParam)); } else { point = new Point(mouseHookStruct.Point.X, mouseHookStruct.Point.Y); switch ((WM_MOUSE)wParam) { case WM_MOUSE.WM_MOUSEMOVE: { var e = new MouseEventArgs(MouseButtons.None, 0, point.X, point.Y, 0); MouseMoveEvent(this, e); break; } case WM_MOUSE.WM_LBUTTONDOWN: { var e = new MouseEventArgs(MouseButtons.Left, 0, point.X, point.Y, 0); MouseDownEvent(this, e); break; } case WM_MOUSE.WM_LBUTTONUP: { var e = new MouseEventArgs(MouseButtons.Left, 0, point.X, point.Y, 0); MouseUpEvent(this, e); break; } case WM_MOUSE.WM_MOUSEWHEEL: { var e = new MouseEventArgs(MouseButtons.None, 0, point.X, point.Y, (short)((mouseHookStruct.MouseData >> 16) & 0xffff)); MouseWheelEvent(this, e); if (shallDock) { return(1); } break; } case WM_MOUSE.WM_MBUTTONUP: { if (shallDock) { shallDock = false; canDock = false; shadow.ClearShadow(); } break; } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); } }
int mouseEventCall(int code, int wParam, ref MouseHookStruct lParam) { if (mouseCallback(lParam.pt, (MouseEventIdentifier)wParam, lParam.time)) { return(1); } return(CallNextHookEx(mousehook, code, wParam, ref lParam)); }
/// <summary> /// 鼠标钩子回调函数 /// </summary> private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam) { // 假设正常执行而且用户要监听鼠标的消息 if ((nCode >= 0) && (OnMouseActivity != null)) { MouseButtons button = MouseButtons.None; int clickCount = 0; switch (wParam) { case WM_LBUTTONDOWN: button = MouseButtons.Left; clickCount = 1; break; case WM_LBUTTONUP: button = MouseButtons.Left; clickCount = 1; break; case WM_LBUTTONDBLCLK: button = MouseButtons.Left; clickCount = 2; break; case WM_RBUTTONDOWN: button = MouseButtons.Right; clickCount = 1; break; case WM_RBUTTONUP: button = MouseButtons.Right; clickCount = 1; break; case WM_RBUTTONDBLCLK: button = MouseButtons.Right; clickCount = 2; break; } // 从回调函数中得到鼠标的信息 MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); MouseEventArgs e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0); // 假设想要限制鼠标在屏幕中的移动区域能够在此处设置 // 后期须要考虑实际的x、y的容差 if (!Screen.PrimaryScreen.Bounds.Contains(e.X, e.Y)) { //return 1; } OnMouseActivity(this, e); } // 启动下一次钩子 return(CallNextHookEx(_hMouseHook, nCode, wParam, lParam)); }
public int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0) { MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); VM_ActionEvent?.Invoke(MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y); } return(0); }
private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam) { if ((nCode >= 0) && (OnMouseActivity != null)) { MouseButtons button = MouseButtons.None; switch (wParam) { case WM_LBUTTONDOWN: button = MouseButtons.Left; break; case WM_RBUTTONDOWN: button = MouseButtons.Right; break; case WM_MOUSEWHEEL: button = MouseButtons.Middle; break; } int clickCount = 0; if (button != MouseButtons.None) { if (wParam == WM_LBUTTONDBLCLK || wParam == WM_RBUTTONDBLCLK) { clickCount = 2; } else { clickCount = 1; } } MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); //dumb up mouse up and down scrolling int delta = 0; if (button == MouseButtons.Middle) { if (MyMouseHookStruct.hwnd > 0) { delta = 1; } else { delta = 2; } } MouseEventArgs e = new MouseEventArgs( button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, delta); OnMouseActivity(this, e); } return(CallNextHookEx(hMouseHook, nCode, wParam, lParam)); }
/// <summary> /// 鼠标钩子回调函数 /// </summary> private static int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam) { // 假设正常执行而且用户要监听鼠标的消息 if ((nCode >= 0) && (OnMouseActivity != null)) { MouseButtons button = MouseButtons.None; int clickCount = 0; switch (wParam) { case WM_LBUTTONDOWN: button = MouseButtons.Left; clickCount = 1; break; case WM_LBUTTONUP: button = MouseButtons.Left; clickCount = 1; break; case WM_LBUTTONDBLCLK: button = MouseButtons.Left; clickCount = 2; break; case WM_RBUTTONDOWN: button = MouseButtons.Right; clickCount = 1; break; case WM_RBUTTONUP: button = MouseButtons.Right; clickCount = 1; break; case WM_RBUTTONDBLCLK: button = MouseButtons.Right; clickCount = 2; break; } if (button != MouseButtons.None && clickCount > 0) { // 从回调函数中得到鼠标的信息 MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); MouseEventArgs e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0); OnMouseActivity(null, e); } } // 启动下一次钩子 int inext = CallNextHookEx(_hMouseHook, nCode, wParam, lParam); return(inext); }
protected override IntPtr OnHookCall(int nCode, IntPtr wParam, IntPtr lParam) { MouseHookStruct mouseStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); IntPtr returnCall = OnMouseHookCall(nCode, wParam, mouseStruct); if ((int)returnCall != 0) { return(returnCall); } return(base.OnHookCall(nCode, wParam, lParam)); }
public int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && sciControl != null) { //TraceManager.Add(wParam.ToString()); MouseHookStruct hookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); if (wParam == (IntPtr)513) //mouseDown { clickedPoint.x = hookStruct.pt.x; clickedPoint.y = hookStruct.pt.y; } if (Control.ModifierKeys == Keys.Control) { if (wParam == (IntPtr)514) //mouseUp { if (currentWord != null) { if (!timer.Enabled) { timer.Start(); } } } else { if (((Control.MouseButtons & MouseButtons.Left) > 0)) { int dx = Math.Abs(clickedPoint.x - hookStruct.pt.x); int dy = Math.Abs(clickedPoint.y - hookStruct.pt.y); if (currentWord != null && dx > CLICK_AREA || dy > CLICK_AREA) { SetCurrentWord(null); } } else { Point globalPoint = new Point(hookStruct.pt.x, hookStruct.pt.y); Point localPoint = sciControl.PointToClient(globalPoint); ProcessMouseMove(localPoint); } } } else { if (currentWord != null) { SetCurrentWord(null); } } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam) { //如果正常运行并且用户要监听鼠标的消息 if ((nCode >= 0) && (OnMouseActivity != null)) { MouseButtons button = MouseButtons.None; int clickCount = 0; switch (wParam) { case WM_LBUTTONDOWN: button = MouseButtons.Left; clickCount = 1; break; case WM_LBUTTONUP: button = MouseButtons.Left; clickCount = 1; break; case WM_LBUTTONDBLCLK: button = MouseButtons.Left; clickCount = 2; break; case WM_RBUTTONDOWN: button = MouseButtons.Right; clickCount = 1; break; case WM_RBUTTONUP: button = MouseButtons.Right; clickCount = 1; break; case WM_RBUTTONDBLCLK: button = MouseButtons.Right; clickCount = 2; break; } //从回调函数中得到鼠标的信息 MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); MouseEventArgs e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0); //if(e.X>700)return 1;//如果想要限制鼠标在屏幕中的移动区域可以在此处设置 OnMouseActivity(this, e); } return(CallNextHookEx(hMouseHook, nCode, wParam, lParam)); }
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam) { if ((nCode >= 0) && (OnKeyDownEvent != null || OnKeyUpEvent != null || OnKeyPressEvent != null)) { KeyboardHookStruct MyKeyboardHookStruct = (KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct)); if (OnKeyDownEvent != null && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN)) { Keys keyData = (Keys)MyKeyboardHookStruct.vkCode; KeyEventArgs e = new KeyEventArgs(keyData); OnKeyDownEvent(this, e); } if (OnKeyPressEvent != null && wParam == WM_KEYDOWN) { byte[] keyState = new byte[256]; GetKeyboardState(keyState); byte[] inBuffer = new byte[2]; if (ToAscii(MyKeyboardHookStruct.vkCode, MyKeyboardHookStruct.scanCode, keyState, inBuffer, MyKeyboardHookStruct.flags) == 1) { KeyPressEventArgs e = new KeyPressEventArgs((char)inBuffer[0]); OnKeyPressEvent(this, e); } } if (OnKeyUpEvent != null && (wParam == WM_KEYUP || wParam == WM_SYSKEYUP)) { Keys keyData = (Keys)MyKeyboardHookStruct.vkCode; KeyEventArgs e = new KeyEventArgs(keyData); OnKeyUpEvent(this, e); } } if (nCode >= 0 && OnMouseClickedEvent != null) { MouseHookStruct MyMSLLHOOKSTRUCT = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); if (wParam == WM_LBUTTONDOWN) { MouseEventArgs ee = new MouseEventArgs(MouseButtons.Left, 1, MyMSLLHOOKSTRUCT.Point.X, MyMSLLHOOKSTRUCT.Point.Y, 0); OnMouseClickedEvent.BeginInvoke(this, ee, null, null); return(1); //stop calling the next hook, so that mouse click action won't be actually performed. } } return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam)); }
static void WindowsHook_HookMsgChanged(string strHookName, int nCode, IntPtr msg, IntPtr lParam) { // 假设正常执行而且用户要监听鼠标的消息 if (nCode >= 0 && OnMouseActivity != null) { MouseButtons button = MouseButtons.None; int clickCount = 0; switch ((int)msg) { case WM_LBUTTONDOWN: button = MouseButtons.Left; clickCount = 1; break; case WM_LBUTTONUP: button = MouseButtons.Left; clickCount = 1; break; case WM_LBUTTONDBLCLK: button = MouseButtons.Left; clickCount = 2; break; case WM_RBUTTONDOWN: button = MouseButtons.Right; clickCount = 1; break; case WM_RBUTTONUP: button = MouseButtons.Right; clickCount = 1; break; case WM_RBUTTONDBLCLK: button = MouseButtons.Right; clickCount = 2; break; } if (button != MouseButtons.None && clickCount > 0) { // 从回调函数中得到鼠标的信息 MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); MouseEventArgs e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0); OnMouseActivity(null, e); } } }
private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam) { // if ok and someone listens to our events if ((nCode >= 0) && (OnMouseActivity != null)) { MouseButtons button = MouseButtons.None; switch (wParam) { case WM_LBUTTONDOWN: button = MouseButtons.Left; break; case WM_LBUTTONUP: //case WM_LBUTTONDBLCLK: button = MouseButtons.Right; break; case WM_RBUTTONDOWN: //case WM_RBUTTONUP: //case WM_RBUTTONDBLCLK: button = MouseButtons.Right; break; } int clickCount = 0; if (button != MouseButtons.None) { if (wParam == WM_LBUTTONDBLCLK || wParam == WM_RBUTTONDBLCLK) { clickCount = 2; } else { clickCount = 1; } } //Marshall the data from callback. MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); MouseEventArgs e = new MouseEventArgs( button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0); OnMouseActivity(this, e); } return(CallNextHookEx(hMouseHook, nCode, wParam, lParam)); }
private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { if (DesignMode) { return(CallNextHookEx(hHook, nCode, wParam, lParam)); } //if ((nCode == HC_ACTION) && (wParam == WM_LBUTTONDON)) if (wParam.ToInt32( ) != WM_LBUTTONDOWN) { return(CallNextHookEx(hHook, nCode, wParam, lParam)); } //Marshall the data from the callback. MouseHookStruct MyMouseHookStruct = ( MouseHookStruct )Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); if (nCode < 0) { return(CallNextHookEx(hHook, nCode, wParam, lParam)); } else { //Create a string variable that shows the current mouse coordinates. Point listPoint = _list.PointToClient(new Point(MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y)); Point controlPoint = btnModalityDropDown.PointToClient(new Point(MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y)); if (_list.Parent != null) { if (!_list.DisplayRectangle.Contains(listPoint) && !btnModalityDropDown.DisplayRectangle.Contains(controlPoint)) { System.Windows.Forms.Control parent = GetTopMostControl( ); if (parent != null) { _list.Visible = false; //parent.Controls.Remove ( _list ) ; } } } } return(CallNextHookEx(hHook, nCode, wParam, lParam)); }
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { MPlayerInput.Single.MouseEventCallBack(); if (nCode >= 0 && wParam == (IntPtr)WM_LBUTTONDOWN) { int vkCode = Marshal.ReadInt32(lParam); MPlayerInput.Single.MouseClickCallBack(); MPlayerInput.Single.MouseLeftClickCallBack(); } if (nCode >= 0 && wParam == (IntPtr)WM_RBUTTONDOWN) { int vkCode = Marshal.ReadInt32(lParam); MPlayerInput.Single.MouseClickCallBack(); MPlayerInput.Single.MouseRightClickCallBack(); } if (nCode >= 0 && wParam == (IntPtr)WM_LBUTTONUP) { int vkCode = Marshal.ReadInt32(lParam); MPlayerInput.Single.MouseReleaseCallBack(); MPlayerInput.Single.MouseLeftRelaseCallBack(); } if (nCode >= 0 && wParam == (IntPtr)WM_RBUTTONUP) { int vkCode = Marshal.ReadInt32(lParam); MPlayerInput.Single.MouseReleaseCallBack(); MPlayerInput.Single.MouseRightRelease(); } if (nCode >= 0 && wParam == (IntPtr)WM_MOUSEMOVE) { int vkCode = Marshal.ReadInt32(lParam); MouseHookStruct M_MouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); Vector3 curMousePos = new Vector3(-M_MouseHookStruct.pt.x, M_MouseHookStruct.pt.y, 0f); if (first) { lastMousePos = curMousePos; first = false; } mouseDeltMove = lastMousePos - curMousePos; MPlayerInput.Single.MouseMoveCallBack(mouseDeltMove); lastMousePos = curMousePos; } return(CallNextHookEx(_hookID, nCode, wParam, lParam)); }
public int hookProc(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0) { MouseHookStruct hookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); mousePacket mp = new mousePacket(); switch ((MouseMessages)wParam) { case MouseMessages.WM_LBUTTONDOWN: mp.flags = (int)MouseEventFlag.MOUSEEVENTF_LEFTDOWN; break; case MouseMessages.WM_LBUTTONUP: mp.flags = (int)MouseEventFlag.MOUSEEVENTF_LEFTUP; break; case MouseMessages.WM_RBUTTONDOWN: mp.flags = (int)MouseEventFlag.MOUSEEVENTF_RIGHTDOWN; break; case MouseMessages.WM_RBUTTONUP: mp.flags = (int)MouseEventFlag.MOUSEEVENTF_RIGHTUP; break; case MouseMessages.WM_MOUSEMOVE: if (hookStruct.pt.x < 0) { return(1); } m_pntCurr.x = (int)((double)hookStruct.pt.x / (double)Screen.PrimaryScreen.Bounds.Width * 65535.0d); m_pntCurr.y = (int)((double)hookStruct.pt.y / (double)Screen.PrimaryScreen.Bounds.Height * 65535.0d); return(0); case MouseMessages.WM_MOUSEWHEEL: mp.flags = (int)MouseEventFlag.MOUSEEVENTF_WHEEL; mp.y = (int)(short)(hookStruct.mouseData >> 16); Debug.WriteLine("mouseData : {0}", mp.y); break; } MouseEvent(mp); return(1); } return(NativeMethods.CallNextHookEx(ms_hHook, nCode, wParam, lParam)); }
/// <summary> 鼠标钩子回调函数 /// </summary> private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam) { // 如果正常运行并且用户要监听鼠标的消息 if ((nCode >= 0) && (OnMouseActivity != null)) { MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); bool ResultHandle = false; OnMouseActivity(MyMouseHookStruct, wParam, lParam.ToInt64(), out ResultHandle); if (ResultHandle) { return(1); //1:表示拦截键盘,return 退出 } } // 启动下一次钩子 return(CallNextHookEx(_hMouseHook, nCode, wParam, lParam)); }
private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam) { if ((nCode >= 0) && (OnMouseActivity != null)) { MouseButtons button = MouseButtons.None; int clickCount = 0; switch (wParam) { case WM_LBUTTONDOWN: button = MouseButtons.Left; clickCount = 1; break; case WM_LBUTTONUP: button = MouseButtons.Left; clickCount = 1; break; case WM_LBUTTONDBLCLK: button = MouseButtons.Left; clickCount = 2; break; case WM_RBUTTONDOWN: button = MouseButtons.Right; clickCount = 1; break; case WM_RBUTTONUP: button = MouseButtons.Right; clickCount = 1; break; case WM_RBUTTONDBLCLK: button = MouseButtons.Right; clickCount = 2; break; } MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); MouseEventArgs e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0); OnMouseActivity(this, e); } return(CallNextHookEx(hMouseHook, nCode, wParam, lParam)); }
private MouseEventArgs GetMouseEventArgs(Int32 wParam, IntPtr lParam) { int clickCount = 0; MouseButtons button = MouseButtons.None; switch (wParam) { case ConstDefintion.WM_LBUTTONDOWN: button = MouseButtons.Left; clickCount = 1; break; case ConstDefintion.WM_LBUTTONUP: button = MouseButtons.Left; clickCount = 1; break; case ConstDefintion.WM_LBUTTONDBLCLK: button = MouseButtons.Left; clickCount = 2; break; case ConstDefintion.WM_RBUTTONDOWN: button = MouseButtons.Right; clickCount = 1; break; case ConstDefintion.WM_RBUTTONUP: button = MouseButtons.Right; clickCount = 1; break; case ConstDefintion.WM_RBUTTONDBLCLK: button = MouseButtons.Right; clickCount = 2; break; } TextHelper.Write($"button:{button.ToString()},clientCount:{clickCount}");; // 从回调函数中得到鼠标的信息 MouseHookStruct mouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); return(new MouseEventArgs(button, clickCount, mouseHookStruct.pt.x, mouseHookStruct.pt.y, 0)); }
private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam) { bool handled = false; // if ok and someone listens to our events if ((nCode >= 0) && (OnMouseActivity != null)) { MouseHookStruct mouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); handled = OnMouseActivity(this, (MouseMessage)wParam, mouseHookStruct); } if (handled) { return(1); } else { return(CallNextHookEx(hMouseHook, nCode, wParam, lParam)); } }
private static int MouseHookProc(int nCode, int wParam, IntPtr lParam) { bool processNextHook = true; // Verifions si nCode est different de 0 et que nos evenements sont bien attachés if ((nCode >= 0) && (cliked != null)) { //Remplissage de la structure MouseLLHookStruct a partir d'un pointeur MouseHookStruct mouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); //Detection du bouton clicker MouseButtons button = MouseButtons.None; switch (wParam) { case WM_LBUTTONDOWN: button = MouseButtons.Left; break; case WM_RBUTTONDOWN: button = MouseButtons.Right; break; } //parametre de notre event MouseEventArgs e = new MouseEventArgs( button, 1, mouseHookStruct.pt.x, mouseHookStruct.pt.y, 0); //On appelle notre event cliked(e); } //Si processNextHook == true alors on transmet le click au destinataire, sinon, on le garde pour nous ( if (processNextHook == true) { return(CallNextHookEx(hookz, nCode, (IntPtr)wParam, lParam).ToInt32()); } else { return(1); } }
private IntPtr MouseHookProcedure(int nCode, IntPtr wParam, IntPtr lParam) { MouseHookStruct mouseStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); if (nCode >= 0) { switch ((MouseMessages)wParam) { case MouseMessages.WM_LBUTTONDOWN: events.Add(new KeyValuePair <EventArgs, EventDetails>(new MouseData(mouseStruct.point.x, mouseStruct.point.y, 0, (MouseEventFlags.MOUSEEVENTF_LEFTDOWN), (uint)mouseStruct.time, mouseStruct.dwExtraInfo), new EventDetails(EventType.MOUSEEVENT, DelayCounter.Delay))); DelayCounter.ResetDelay(); break; case MouseMessages.WM_LBUTTONUP: events.Add(new KeyValuePair <EventArgs, EventDetails>(new MouseData(mouseStruct.point.x, mouseStruct.point.y, 0, (MouseEventFlags.MOUSEEVENTF_LEFTUP), (uint)mouseStruct.time, mouseStruct.dwExtraInfo), new EventDetails(EventType.MOUSEEVENT, DelayCounter.Delay))); DelayCounter.ResetDelay(); break; case MouseMessages.WM_MOUSEMOVE: events.Add(new KeyValuePair <EventArgs, EventDetails>(new MouseData(mouseStruct.point.x, mouseStruct.point.y, 0, (MouseEventFlags.MOUSEEVENTF_ABSOLUTE | MouseEventFlags.MOUSEEVENTF_MOVE), (uint)mouseStruct.time, mouseStruct.dwExtraInfo), new EventDetails(EventType.MOUSEEVENT, DelayCounter.Delay))); DelayCounter.ResetDelay(); break; case MouseMessages.WM_MOUSEWHEEL: int mouseData = mouseStruct.mouseData; events.Add(new KeyValuePair <EventArgs, EventDetails>(new MouseData(mouseStruct.point.x, mouseStruct.point.y, mouseData, (MouseEventFlags.MOUSEEVENTF_WHEEL), (uint)mouseStruct.time, mouseStruct.dwExtraInfo), new EventDetails(EventType.MOUSEEVENT, DelayCounter.Delay))); DelayCounter.ResetDelay(); break; case MouseMessages.WM_RBUTTONDOWN: events.Add(new KeyValuePair <EventArgs, EventDetails>(new MouseData(mouseStruct.point.x, mouseStruct.point.y, 0, (MouseEventFlags.MOUSEEVENTF_RIGHTDOWN), (uint)mouseStruct.time, mouseStruct.dwExtraInfo), new EventDetails(EventType.MOUSEEVENT, DelayCounter.Delay))); DelayCounter.ResetDelay(); break; case MouseMessages.WM_RBUTTONUP: events.Add(new KeyValuePair <EventArgs, EventDetails>(new MouseData(mouseStruct.point.x, mouseStruct.point.y, 0, (MouseEventFlags.MOUSEEVENTF_RIGHTUP), (uint)mouseStruct.time, mouseStruct.dwExtraInfo), new EventDetails(EventType.MOUSEEVENT, DelayCounter.Delay))); DelayCounter.ResetDelay(); break; } } return(CallNextHookEx(hookID, nCode, wParam, lParam)); }
private static int MouseHookProc(int a_nCode, int a_wParam, IntPtr a_lParam) { if (a_nCode >= 0 && s_hookTarget.IsDisposed == false) { MouseHookStruct mouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(a_lParam, typeof(MouseHookStruct)); switch (a_wParam) { case WmMousemove: break; case WmLbuttondown: break; case WmLbuttonup: break; case WmLbuttondblclk: break; case WmRbuttondown: break; case WmRbuttonup: break; case WmRbuttondblclk: break; case WmMousewheel: break; case WmMousehwheel: break; default: return(CallNextHookEx(s_hMouseHook, a_nCode, a_wParam, a_lParam)); } } return(CallNextHookEx(s_hMouseHook, a_nCode, a_wParam, a_lParam)); }
private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { //Marshall the data from callback. MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); // this code requires us to return the next hook if (nCode < 0) { return(Win32.User32.User32API.CallNextHookEx(HookHandle, nCode, wParam, lParam)); } //Create a string variable with shows current mouse. coordinates switch ((HookWindowMessage)wParam.ToInt32()) { case HookWindowMessage.WM_LBUTTONDOWN: System.Windows.Forms.MessageBox.Show("left down"); break; case HookWindowMessage.WM_LBUTTONUP: System.Windows.Forms.MessageBox.Show("left up"); break; case HookWindowMessage.WM_RBUTTONDOWN: System.Windows.Forms.MessageBox.Show("right down"); break; case HookWindowMessage.WM_RBUTTONUP: System.Windows.Forms.MessageBox.Show("right up"); break; case HookWindowMessage.WM_MOUSEWHEEL: System.Windows.Forms.MessageBox.Show("wheel up"); break; case HookWindowMessage.WM_MOUSEMOVE: System.Windows.Forms.MessageBox.Show("mouse move"); break; } // pass the message on to the next hook return(Win32.User32.User32API.CallNextHookEx(HookHandle, nCode, wParam, lParam)); }
private IntPtr MouseHookCallback(int nCode, IntPtr wParam, ref MouseHookStruct lParam) { if (nCode >= 0) { if (userProcMouse != null) { // 鼠标消息 const int WM_MOUSEMOVE = 0x200; const int WM_LBUTTONDOWN = 0x201; const int WM_RBUTTONDOWN = 0x204; const int WM_MBUTTONDOWN = 0x207; const int WM_LBUTTONUP = 0x202; const int WM_RBUTTONUP = 0x205; const int WM_MBUTTONUP = 0x208; const int WM_LBUTTONDBLCLK = 0x203; const int WM_RBUTTONDBLCLK = 0x206; const int WM_MBUTTONDBLCLK = 0x209; //设置MouseHookStruct.mouseAction MouseHookStruct.MouseActionEnum mAction = new MouseHookStruct.MouseActionEnum(); switch ((int)wParam) { case WM_MOUSEMOVE: mAction = MouseHookStruct.MouseActionEnum.Move; break; case WM_LBUTTONDOWN: mAction = MouseHookStruct.MouseActionEnum.LeftButtonDown; break; case WM_LBUTTONUP: mAction = MouseHookStruct.MouseActionEnum.LeftButtonUp; break; case WM_LBUTTONDBLCLK: mAction = MouseHookStruct.MouseActionEnum.LeftButtonDoubleClick; break; case WM_RBUTTONDOWN: mAction = MouseHookStruct.MouseActionEnum.RightButtonDown; break; case WM_RBUTTONUP: mAction = MouseHookStruct.MouseActionEnum.RightButtonUp; break; case WM_RBUTTONDBLCLK: mAction = MouseHookStruct.MouseActionEnum.RightButtonDoubleClick; break; case WM_MBUTTONDOWN: mAction = MouseHookStruct.MouseActionEnum.MiddleButtonDown; break; case WM_MBUTTONUP: mAction = MouseHookStruct.MouseActionEnum.MiddleButtonUp; break; case WM_MBUTTONDBLCLK: mAction = MouseHookStruct.MouseActionEnum.MiddleButtonDoubleClick; break; } lParam.mouseAction = mAction; bool flag = false; userProcMouse(lParam, out flag); if (flag) { return (System.IntPtr)1; //同上 } } } return CallNextHookEx(hookID, nCode, wParam, ref lParam); }
private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, ref MouseHookStruct lParam);