限制鼠标活动区域

1 篇文章 0 订阅

1.首先是获取鼠标的绝对位置的类

class CursorPositionHelper
    {
        [StructLayout(LayoutKind.Sequential)]
        public struct POINT
        {
            public int X;
            public int Y;
        }
        [DllImport("user32.dll", EntryPoint = "GetCursorPos", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern bool GetCursorPos(out POINT pt);
    }

2. 限制鼠标区域的类

    class ClipCursorHelper
    {

        [DllImport("user32.dll",EntryPoint = "ClipCursor",CharSet = CharSet.Auto,SetLastError = true)]
        static extern bool ClipCursor(ref RECT lpRect);

        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;
            }
        }
    
        /// <summary>
        /// 限制鼠标光标的位置
        /// </summary>
        /// <param name="startX">限制矩形的左上角X坐标</param>
        /// <param name="startY">限制矩形的左上角Y坐标</param>
        /// <param name="width">限制矩形的宽</param>
        /// <param name="height">限制矩形的高</param>
        /// <returns></returns>
        public static bool SetCursorPosition(int startX, int startY, int width, int height)
        {
            RECT rect = new RECT(startX, startY, startX + width, startY + height);
            return ClipCursor(ref rect);
        }
}

调用示例:

//获取鼠标的绝对坐标
CursorPositionHelper.POINT mouseAbsPoint = new CursorPositionHelper.POINT();
CursorPositionHelper.GetCursorPos(out mouseAbsPoint);
//限制鼠标的活动区域
ClipCursorHelper.SetCursorPosition(mouseAbsPoint.X, mouseAbsPoint.Y, 1, 1);

注:标红的部分,如果为1,则鼠标按下后,不可移动


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值