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

server/2024/11/28 5:30:12/

在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.ppmy.cn/server/137734.html

相关文章

Linux特种文件系统--tmpfs文件系统

tmpfs类似于RamDisk&#xff08;只能使用物理内存&#xff09;&#xff0c;使用虚拟内存&#xff08;简称VM&#xff09;子系统的页面存储文件。tmpfs完全依赖VM&#xff0c;遵循子系统的整体调度策略。说白了tmpfs跟普通进程差不多&#xff0c;使用的都是某种形式的虚拟内存&a…

【C/C++】qsort函数的学习与使用

零.导言 在之前的文章中&#xff0c;我介绍了冒泡排序&#xff0c;即按ASCII码值把元素从小到大排序&#xff08;文章链接我放在了第五部分&#xff0c;有兴趣的小伙伴可以求看看&#xff09;。而今天我将继续介绍qsort函数&#xff0c;这个函数可以起到和冒泡排序一样的作用&a…

【数据结构】数组和向量

### 什么是数组&#xff1f; 想象一下&#xff0c;你有一个装糖果的长盒子。这个盒子里有很多小格子&#xff0c;每个格子里可以放一颗糖果。数组就像这个盒子&#xff0c;每个小格子就是一个位置&#xff0c;我们叫它“元素”。当你想找某颗糖果时&#xff0c;只需要知道它在…

数据结构初识及顺序表详解

目录 1.数据结构相关概念 2.为什么需要数据结构&#xff1f; 3.顺序表 1.概念 2.结构 3.顺序表的类型 3.1静态顺序表 3.2动态顺序表 4.顺序表的实现 1.准备工作 2.基础接口实现 2.1创建动态顺序表结构 2.2顺序表初始化 2.3顺序表的销毁 2.4顺序表的打印 3.顺序…

Rust 力扣 - 238. 除自身以外数组的乘积

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 这题主要有个关键点&#xff0c;就是元素能取0&#xff0c;然后我们分类讨论元素为0的数量 如果数组中存在至少两个元素为0&#xff0c;则每个元素的除自身以外的乘积为0如果数组中仅存在一个0&#xff0c;则为…

【React】react-app-env.d.ts 文件

在使用 create-react-app 生成的 TypeScript 项目模板中&#xff0c;react-app-env.d.ts 文件的作用是为 React 应用中的全局变量和类型进行声明。 全局类型声明&#xff1a;react-app-env.d.ts 文件会引入 react-scripts 提供的全局类型定义&#xff0c;这些类型定义扩展了 Ty…

【搜索引擎】俄罗斯搜索引擎yandex

俄罗斯搜索引擎yandex 1997年&#xff0c;俄罗斯搜索引擎Yandex&#xff08;俄语意为&#xff1a;语言目录&#xff09;首次上线&#xff0c;已发展成为全球第四大搜索引擎和第二大非英语搜索引擎 https://yandex.com/

网址访问小工具(模拟浏览器)

网址访问小工具&#xff08;模拟浏览器&#xff09; 文章说明核心代码运行截图源码下载 文章说明 本篇文章主要是我写的一个小demo&#xff0c;感觉效果还蛮不错的&#xff0c;作为一个记录新想法的实现思路&#xff1b;介绍了模拟浏览器页面的一些页面实现的小细节。 采用vue3…