当前位置: 首页 > news >正文

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;}elsereturn false;}

代码解除键盘鼠标锁定

 /// <summary>/// 解除键盘鼠标锁定/// </summary>/// <returns></returns>public static bool UnLock(){if (IsAdministrator()){BlockInput(false);//解除键盘鼠标锁定return true;}elsereturn 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;}elsereturn false;}/// <summary>/// 解除键盘鼠标锁定/// </summary>/// <returns></returns>public static bool UnLock(){if (IsAdministrator()){BlockInput(false);//解除键盘鼠标锁定return true;}elsereturn 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();
http://www.lryc.cn/news/474782.html

相关文章:

  • Stable Diffusion 3.5发布:图像生成新纪元,多模态AI的突破!
  • MySQL超大分页怎么优化处理?limit 1000000,10 和 limit 10区别?覆盖索引、面试题
  • RabbitMQ 实现消息队列负载均衡
  • 嵌入式linux中HTTP协议原理基本分析
  • thinkphp和vue基于Workerman搭建Websocket服务实现用户实时聊天,完整前后端源码demo及数据表sql
  • 浅谈射频应用
  • SAP(PP生产制造)拆解工单业务处理
  • 《Python游戏编程入门》注-第4章2
  • deque
  • YOLOv11改进策略【卷积层】| CVPR-2020 Strip Pooling 空间池化模块 处理不规则形状的对象 含二次创新
  • yt-dlp下载视频
  • oracle insert忽略主键冲突,忽略重复记录
  • 小新学习k8s第四天之发布管理
  • 01_IAR新建CC2530工程
  • 原生鸿蒙的竞争力到底如何?
  • 数字化生态平台:关键功能全解析
  • c 到 c++ 过渡
  • [linux驱动开发--环境搭建] qemu-9.1+linux-kernel-6.11
  • 019集——获取CAD图中多个实体的包围盒(CAD—C#二次开发入门)
  • 【Clickhouse 探秘】Clikchouse 有哪些表引擎?你都知道哪些?
  • 你好,C++并发世界
  • windows10 安装 达梦数据库DM8
  • ntp交叉编译 ntpdate时间同步
  • 微服务实战系列之玩转Docker(十六)
  • Solana 代币 2022 — Transfer Hook
  • 网络爬虫中的反爬虫技术:突破限制,获取数据
  • 【ROS2】cv_bridge:ROS图像消息和OpenCV的cv::Mat格式转换库
  • 【Web.路由】——URL生成
  • 使用 Java 实现从搜索引擎批量下载图片
  • 基于Matlab GUI的说话人识别测试平台