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)!