public unsafe void WndProc_XMB2(IntPtr msg) { var m = (MSG *)msg; MSLLHOOKSTRUCT *p = (MSLLHOOKSTRUCT *)m->lParam; switch ((WM)m->message) { case WM.WM_XBUTTONDOWN: switch (p->mouseData) { case XBUTTON2: INLINE_TryStart(); break; } break; case WM.WM_MBUTTONUP: switch (p->mouseData) { case XBUTTON2: INLINE_TryStop(); break; } break; } }
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)); }
unsafe void WndProc(IntPtr MSG) { var m = (MSG *)MSG; var sb = new StringBuilder(); sb.AppendLine($"msg={((WM)m->message).ToString()}"); switch ((WM)m->message) { case WM.WM_LBUTTONDOWN: case WM.WM_LBUTTONUP: case WM.WM_RBUTTONDOWN: case WM.WM_RBUTTONUP: case WM.WM_MBUTTONDOWN: case WM.WM_MBUTTONUP: case WM.WM_XBUTTONDOWN: case WM.WM_XBUTTONUP: case WM.WM_MOUSEMOVE: { MSLLHOOKSTRUCT *p = (MSLLHOOKSTRUCT *)m->lParam; sb.AppendLine($"mdata={(p->mouseData).ToString()}"); } break; case WM.WM_KEYDOWN: case WM.WM_KEYUP: case WM.WM_SYSKEYDOWN: case WM.WM_SYSKEYUP: { KBDLLHOOKSTRUCT *p = (KBDLLHOOKSTRUCT *)m->lParam; sb.AppendLine($"vkCode={((Keys)p->vkCode).ToString()}"); } break; default: break; } this.textBox1.Text = sb.ToString(); }