public struct RECT { public int Left; public int Top; public int Right; public int Bottom; public RECT(Int32 left, Int32 top, Int32 right, Int32 bottom) { Left = left; Top = top; Right = right; Bottom = bottom; } }
[DllImport("user32.dll")] static extern bool ClipCursor(IntPtr lpRect); [System.Runtime.InteropServices.DllImport("User32.dll")] static extern bool ClipCursor(ref RECT lpRect); public static void LimitMouse(int left, int top, int right, int bottom) { var rect = new RECT(left, top, right, bottom); bool flag = ClipCursor(ref rect); } public static void LimitMouse() { bool flag = ClipCursor(IntPtr.Zero); }
以上方法测试,可用,但是有一个问题,当使用双屏显示器的时候,设置的鼠标范围,超出一块屏幕的位置时,也就是在副屏的范围,该功能变失效了。