自学内容网 自学内容网

C#如何锁定和解除鼠标及键盘BlockInput

在C#中,"BlockInput"通常指的是一个功能或方法,用于阻止或暂停用户输入一段时间。这在某些特定的应用场景下非常有用,比如在游戏中防止玩家连续快速点击导致游戏逻辑错误,或者在UI应用中防止用户在某个操作正在进行时进行其他操作。

导入user32.dll

[DllImport(“user32.dll”)]
static extern void BlockInput(bool Block);

代码锁定鼠标及键盘

/// <summary>
        /// 锁定鼠标及键盘
        /// </summary>
        /// <returns></returns>
        public static bool Lock()
        {
            if (IsAdministrator())
            {
                BlockInput(true);//锁定鼠标及键盘
                return true;
            }
            else
                return false;
        }

代码解除键盘鼠标锁定

 /// <summary>
        /// 解除键盘鼠标锁定
        /// </summary>
        /// <returns></returns>
        public static bool UnLock()
        {
            if (IsAdministrator())
            {
                BlockInput(false);//解除键盘鼠标锁定
                return true;
            }
            else
                return false;
        }

注意:Lock和Unlock需在一个线程里

用户强制解除

同时按Ctrl+Alt+Delete或休眠键等有优先级的键

C#源码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security.Principal;
using System.Text;

namespace iSystem
{
    public class KeyboardBlocker
    {
        /// <summary>
        /// 锁定鼠标及键盘
        /// </summary>
        /// <returns></returns>
        public static bool Lock()
        {
            if (IsAdministrator())
            {
                BlockInput(true);//锁定鼠标及键盘
                return true;
            }
            else
                return false;
        }

        /// <summary>
        /// 解除键盘鼠标锁定
        /// </summary>
        /// <returns></returns>
        public static bool UnLock()
        {
            if (IsAdministrator())
            {
                BlockInput(false);//解除键盘鼠标锁定
                return true;
            }
            else
                return false;
        }

        /// <summary>
        /// 是否是管理员权限
        /// </summary>
        /// <returns></returns>
        public static bool IsAdministrator()
        {
            WindowsIdentity current = WindowsIdentity.GetCurrent();
            WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current);
            return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
        }

        [DllImport("user32.dll")]
        static extern void BlockInput(bool Block);

    }
}

使用

KeyboardBlocker.Lock();
KeyboardBlocker.UnLock();


原文地址:https://blog.csdn.net/mr_wei_/article/details/143426033

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!