private IntPtr MouseHookProc(int code, IntPtr wParam, IntPtr lParam) { IntPtr nextHandle = CallNextHookEx(HookHandle, code, wParam, lParam); /*Call下一个钩子*/ MouseMsg mouseMsg = (MouseMsg)wParam; MouseButtons mouse; switch (mouseMsg) { case MouseMsg.WM_LBUTTONDOWN: case MouseMsg.WM_LBUTTONUP: mouse = MouseButtons.Left; break; case MouseMsg.WM_MBUTTONDOWN: case MouseMsg.WM_MBUTTONUP: mouse = MouseButtons.Middle; break; case MouseMsg.WM_RBUTTONDOWN: case MouseMsg.WM_RBUTTONUP: mouse = MouseButtons.Right; break; default: mouse = MouseButtons.None; break; } if (mouse.Equals(MouseButtons.Right)) { nextHandle = new IntPtr(1); } return(nextHandle); }
public MouseHookEventArgs(MouseMsg msg, int x, int y,IntPtr wParam, IntPtr lParam) { Msg = msg; X = x; Y = y; this.wParam = wParam; this.lParam = lParam; }
public MouseHookEventArgs(MouseMsg msg, int x, int y, IntPtr wParam, IntPtr lParam) { Msg = msg; X = x; Y = y; this.wParam = wParam; this.lParam = lParam; }
public static IntPtr MouseCB(int nCode, IntPtr wParam, IntPtr LParam) { unsafe { MouseMsg mm = new MouseMsg(); MSLLHOOKSTRUCT *mp = (MSLLHOOKSTRUCT *)LParam.ToPointer(); mm.Dx = (mp->dx) - m_pos.X; mm.Dy = (mp->dy) - m_pos.Y; mm.MouseData = (mp->mouseData) >> 16; switch (wParam.ToInt32()) { case (int)MouseEvent.WM_LBUTTONDOWN: mm.Flags = (uint)MouseEventFlags.LeftButtonDown; break; case (int)MouseEvent.WM_LBUTTONUP: mm.Flags = (uint)MouseEventFlags.LeftButtonUp; break; case (int)MouseEvent.WM_MOUSEMOVE: mm.Flags = (uint)MouseEventFlags.MouseMoved; break; case (int)MouseEvent.WM_MOUSEWHEEL: mm.Flags = (uint)MouseEventFlags.Wheel; break; case (int)MouseEvent.WM_MOUSEHWHEEL: mm.Flags = (uint)MouseEventFlags.HWheel; break; case (int)MouseEvent.WM_RBUTTONDOWN: mm.Flags = (uint)MouseEventFlags.RightButtonDown; break; case (int)MouseEvent.WM_RBUTTONUP: mm.Flags = (uint)MouseEventFlags.RightButtonUp; break; } _Host.EnqueueEventMsg(mm); } return(new IntPtr(1)); }
private bool HandleSpecialButtonCombination(MouseMsg msg) { if (!_captured && msg == MouseMsg.WM_MBUTTONDOWN) { var mouseSwapped = Native.GetSystemMetrics(Native.SystemMetric.SM_SWAPBUTTON) != 0; var lButtonPressed = Native.GetAsyncKeyState(mouseSwapped ? Keys.RButton : Keys.LButton) < 0; var shiftPressed = Native.GetAsyncKeyState(Keys.ShiftKey) < 0; if (lButtonPressed) { if (shiftPressed) { Post(WM.GUI_REQUEST, (int)GUI_RequestType.ShowHideTray); } else { Post(WM.GUI_REQUEST, (int)GUI_RequestType.PauseResume); } return(true); } } return(false); }
public override void Update() { base.Update(); if (_obj is StopComm) { Server.State = new AuthenticatedState(); } else if (_obj is KeyMsg) { KeyMsg kMsg = (KeyMsg)_obj; INPUT[] inputs = new INPUT[1]; inputs[0].type = (uint)InputType.INPUT_KEYBOARD; inputs[0].U.ki.wVk = kMsg.VirtualKey; Console.WriteLine(kMsg.VirtualKey); Console.WriteLine(kMsg.Pressed); if (!kMsg.Pressed) { inputs[0].U.ki.dwFlags = KEYEVENTF.KEYUP; } else { inputs[0].U.ki.dwFlags = 0; } inputs[0].U.ki.time = 0; inputs[0].U.ki.dwExtraInfo = (UIntPtr)(UInt64)0; WindowsAPI.SendInput(1, inputs, System.Runtime.InteropServices.Marshal.SizeOf(inputs[0])); } else if (_obj is MouseMsg) { MouseMsg mMsg = (MouseMsg)_obj; INPUT[] inputs = new INPUT[1]; inputs[0].type = (uint)InputType.INPUT_MOUSE; inputs[0].U.mi.dx = mMsg.Dx; inputs[0].U.mi.dy = mMsg.Dy; MOUSEEVENTF dwFlags = 0; if ((mMsg.Flags & (int)MouseEventFlags.LeftButtonDown) != 0) { dwFlags |= MOUSEEVENTF.LEFTDOWN; } if ((mMsg.Flags & (int)MouseEventFlags.LeftButtonUp) != 0) { dwFlags |= MOUSEEVENTF.LEFTUP; } if ((mMsg.Flags & (int)MouseEventFlags.RightButtonDown) != 0) { dwFlags |= MOUSEEVENTF.RIGHTDOWN; } if ((mMsg.Flags & (int)MouseEventFlags.RightButtonUp) != 0) { dwFlags |= MOUSEEVENTF.RIGHTUP; } if ((mMsg.Flags & (int)MouseEventFlags.MiddleButtonDown) != 0) { dwFlags |= MOUSEEVENTF.MIDDLEDOWN; } if ((mMsg.Flags & (int)MouseEventFlags.MiddleButtonUp) != 0) { dwFlags |= MOUSEEVENTF.MIDDLEUP; } if ((mMsg.Flags & (int)MouseEventFlags.Wheel) != 0) { dwFlags |= MOUSEEVENTF.WHEEL; } if ((mMsg.Flags & (int)MouseEventFlags.HWheel) != 0) { dwFlags |= MOUSEEVENTF.HWHEEL; } if ((mMsg.Flags & (int)MouseEventFlags.MouseMoved) != 0) { dwFlags |= MOUSEEVENTF.MOVE; } inputs[0].U.mi.dwFlags = dwFlags; inputs[0].U.mi.mouseData = mMsg.MouseData; inputs[0].U.mi.time = 0; inputs[0].U.mi.dwExtraInfo = (UIntPtr)(UInt64)0; WindowsAPI.SendInput(1, inputs, System.Runtime.InteropServices.Marshal.SizeOf(inputs[0])); } }