C#中窗体屏蔽键盘按键

C# 区分键盘和扫码枪输入 最近有个项目客户有个要求有个界面只准扫码枪输入,不准用键盘输入,我研究了一下,找了找网上的代码,实现了一下,主要原理是提前知道输入信息的来源,判断哪个设备的,然后如果是键盘的,不往后面传递信息好了。 阅读详情

重写Wndproc示例:

static bool flag = false;
        protected override void WndProc(ref Message m)
        {
           switch (m.Msg) {
                 case 0x0200: //WM_MOUSEMOVE
                         if (flag)
                         {
                             PostMessage(this.Handle, 0x00A1,new IntPtr(2),m.LParam);//这里需要导入 user32.dll 
                         }
                         break;
                     case 0x201://WM_LBUTTONDOWN
                         flag = true;
                         break;
                     case 0x202://WM_LBUTTONUP
                        flag = false;

                               break;

                default:
                    base.WndProc(ref m);
                    break;
            }

      [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);





虚拟键盘代码                        16进制值                          对应键   
VK_LBUTTON                     01                                    鼠标左键   
VK_RBUTTON                    02                                   鼠标右键   
VK_CANCEL                       03                                  用于执行Ctrl+C或Ctrl+Break   
VK_MBUTTON                     04                                   鼠标中键   
VK_BACK                             08                                   Backspace键   
VK_TAB                             09                                    Tab键   
VK_CLEAR                         0C                                    Clear键   
VK_RETURN                     0D                                    Enter键   
VK_SHIFT                           10                                    Shift键   
VK_CONTROL                   11                                   Ctrl键   
VK_MENU                         12                                     Arl键   
VK_PAUSE                       13                                    Pause键   
VK_CAPITAL                     14                                   Capslock键   
VK_ESCAPE                     1B                                   Ese键   
VK_SPACE                        20                                    SpaceBar键   
VK_PRIOR                       21                                  PgUp键   
VK_NEXT                          22                                    PgDn键   
VK_END                           23                                      End键   
VK_HOME                        24                                     Home键   
VK_LEFT                          25                                     Left   Arrow键   
VK_UP                             26                                      Up   Arrow键   
VK_RIGHT                       27                                     Right   Arrow键   
VK_DOWN                     28                                      Down   Arrow键   
VK_SELECT                   29                                       Select键   
VK_EXECUTE                  2B                                      Execute键   
VK_SNAPSHOT             2C                                      PrintScreen键   
VK_INSERT                   2D               Ins键   
VK_DELECT                   2E Del键   
VK_HELP 2F Help键   
VK_0      30 0键   
… … …   
VK_9           39 9键   
VK_A         41 A键   
… … …   
VK_Z           5A Z键   
VK_NUMAPD0       60 数字板0键   
… … …   
VK_NUMAPD9       69 数字板9键   
VK_MULTIPY        6A 乘号键   
VK_ADD                6B 加号键   
VK_SEPARATOR 6C Separator键   
VK_SUBSTRACT 6D 减号键   
VK_DECIMAL        6E 小数点键   
VK_DIVIDE                   6F 除号键   
VK_F1                70 F1键   
… … …   
VK_F24            87 F24键   
VK_NUMLOCK 90 NumLock键   
VK_SCROLL                   91 ScrollLock键

VK_CAPITAL       Caps   Lock   
VK_ESCAPE         Esc   
VK_SPACE           Space   
VK_PRIOR           Page   Up   
VK_NEXT             Page   Down   
VK_END               End   
VK_HOME             Home   
VK_LEFT             向左方向键   
VK_UP   
VK_RIGHT   
VK_DOWN   
VK_DELETE         Delete   
VK_INSERT         Inser   
VK_NUMPAD0~VK_NUMPAD9           小键盘上的0-9键   
VK_F1-VK_f12                             F1-F12键

检测Caps Lock 键:

var
KeyStates:TKeyboardState;

begin

   GetKeyboardState(KeyStates);
if Odd(KeyStates[VK_CAPITAL]) then
    spBtnA.Caption := 'a'
else
    spBtnA.Caption := 'A';

end;


2022最新C#禁用ctrl+alt+del等键盘热键方法,禁用USB,win7、win10有效 C#实现的禁用ctrl+alt+del键,Windows键、Esc键等任意键,USB禁用,针对win7、win10环境,2022年最新测试有效,设置方便。qq347103342 阅读详情

相关推荐

C#实现全局鼠标按键屏蔽:Windows钩子原理与完整代码实战

在Windows桌面开发中,系统级输入控制是高级功能实现的基础。通过钩子(Hook)机制,开发者可以拦截并处理操作系统消息流,这一原理广泛应用于键盘监控、鼠标事件捕获等场景。其技术价值在于突破了应用层限制,实现了全局输入管理,为专业软件提供了底层控制能力。在工业控制上位机、演示系统、Kiosk信息亭及游戏开发等场景中,这种能力尤为关键。本文聚焦于使用C#和Windows API实现全局鼠标按键屏蔽,通过P/Invoke调用SetWindowsHookEx等核心函数,结合低级鼠标钩子(WH_MOUSE_LL)

weixin_30516429的博客 329

界面仅允许扫码枪录入禁止手工键盘输入

由于扫码枪和键盘都输入外设,对于应用程序来说,无法判断输入源。 可间接的通过按键时间来判断。 扫码枪速度大概在0-50ms之间,平均在8ms左右,手动输入在100-200之间,除非特地快速输入可达到30几ms。 我们取个适中的时间:ms DateTime dStart; DateTime dEnd; private void textBox1_KeyDown(object sender, KeyEventArgs e) { dStart = DateTime.Now; } private

凯神做开发 6196

C#实现键盘钩子屏蔽热键(附完整源代码)

C#实现键盘钩子屏蔽热键(附完整源代码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 497

c# 禁用鼠标与键盘

禁用鼠标与键盘有两种方法: 直接调用禁用API(缺点:按Ctrl+alt+delete,禁用会失效) ① 帮助类 public class BlockHelper { private static Logger<BlockHelper> log = new Logger<BlockHelper>(); priva...

Super毛毛虫的博客 1万+

C# WinForm中屏蔽特殊功能键的技术实现

本文还有配套的精品资源,点击获取 简介:在Windows系统中,Win键、Ctrl+Alt+Del和Alt+F4等组合键具有特定的功能,如打开“开始”菜单、启动任务管理器和关闭窗口。在开发C# WinForm应用程序时,出于安全或特定需求可能需要屏蔽这些键。本文将介绍如何在C#中实现对这些特殊功能键的屏蔽和释放。其中,Win键可以通过设置键盘钩子实现屏蔽,而Alt+F4可以...

weixin_35752122的博客 2399

c# winform 中让文本框可以用扫描枪输入,而不能用键盘输入

C#winform 中让文本框可以用扫描枪输入,而不能用键盘输入。该文档详细记录文本框不能用键盘手动输入,欢迎下载。

windows mobile 键盘钩子 屏蔽按键

封装好的类,直接添加到工程中就可以使用。/*这个类是用来屏蔽相关按键的,你可以new一个这个类的实例,然后调用相关的public方法就可以了,在C#程序中,你要在程序开始的位置调用,也就是Main函数中的窗体创建语句前调用开始钩子函数。在Main函数结束的位置再调用钩子关闭函数。将你想屏蔽的按键的键值添加到对应的位置,注释里面有解释,请查看。*/ public class KeyBoardH

生于忧患,死于安乐 3396

C#利用钩子屏蔽ctrl+alt+delete键盘按钮

C#屏蔽键盘,利用HOOK钩子屏蔽键盘上的 ctrl+alt+delete组合键按钮,源码可直接编译,编译运行截图如图所示,程序在屏蔽指定按钮后可以解除屏蔽。 运行环境:Visual Studio2010

C# 窗体应用程序制作虚拟键盘按键功能

这几天都在忙着写一个老板提出的傻逼功能,大致说说需求,就是要用用Ios的虚拟按键去控制PC的角色移动,如果是Unity来制作这个功能并不难弄,因为这个只需要通过网络层来传递控制信号,然后PC端进行响应即可。但是好死不死的项目需求用到的不是unity开发。项目用到的引擎是CE,这个引擎为了性能的是直接截取底层键盘信息进行响应,这样对我来说真是噩耗(PS:大部分游戏引擎都是直接获取底层键盘按键的信号来...

Bě9oniǎ 的博客 7563

基于大模型的急性重症胰腺炎全流程预测与诊疗方案研究

本研究构建了基于大模型的急性重症胰腺炎(SAP)全流程预测与诊疗系统,实现了从术前风险评估到术后康复管理的精准诊疗闭环。通过整合临床信息、实验室检查和影像学等多源数据,模型在测试集上预测准确率达X%,AUC为X,显著优于传统评分系统。研究创新性地将预测结果应用于手术方案制定、麻醉决策、并发症防控及个性化护理,形成智能化诊疗方案。验证结果显示模型具有良好的稳定性和临床适用性,同时配套的健康教育体系提升了患者自我管理能力。尽管存在样本局限性和模型可解释性等不足,该研究为SAP的精准诊疗提供了新范式,未来可通过扩

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1117

HyperLynx实战:手把手教你搞定DDR4信号完整性仿真(附ODT与终端电阻配置避坑)

本文详细介绍了使用HyperLynx进行DDR4信号完整性仿真的实战技巧,重点解析了ODT配置与终端电阻优化的黄金法则。通过模型准备、拓扑构建、ODT扫描等关键步骤,帮助硬件工程师规避常见设计陷阱,提升高速数字电路设计的效率与可靠性。

weixin_30861797的博客 641

C#:键盘钩子的使用,实现键盘屏蔽 及 全局改键功能

1.引入 由于需要使用动态链接库及Process进程类,所以需要在项目中引入命名空间 using System.Diagnostics; using System.Runtime.InteropServices;   //调用操作系统动态链接库   2.键盘屏蔽 实现屏蔽键盘的功能,并且把按的任意的一个键的值显示在标签中。 如 按下了 space windows 等,不会产生键盘该有...

八步赶蝉 7632

破解雪球网acw_sc__v2加密与无限debugger反爬策略

本文详细解析了雪球网的反爬机制,重点破解了其核心的acw_sc__v2加密参数与无限debugger反调试策略。通过实战案例,从抓包分析、逆向调试到算法还原,提供了完整的Python代码实现,帮助开发者掌握应对类似加密反爬的通用方法。

weixin_29207533的博客 1908

C# KeyDown事件

当需要持续、切换点击鼠标时,鼠标结合键盘的操作效率会更高,因此记录下窗体KeyDown和KeyUp时遇到的一些小问题 1、窗体的KeyPreview属性需要设置为true 2、将keyPreview值设置成true后按功能键和数字键都没有问题,但是按方向键任然没有触发KeyDown事件? 解决:覆盖默认的系统键处理方式,遇到方向键,则直接返回,系统不处理,这样键值就会被传递到窗体,触发KeyDown事件。 protected override bool ProcessD...

潘达小新 7399

history 历史命令记录功能如何防坏人(高级)

在 Linux 下面可以使用 history 命令查看用户的所有历史操作,同时 shell 命令操作记录默认保存在用户目录的 .bash_history 文件中。通过这个文件可以查询 shell 命令的执行历史,有助于运维人员进行系统审计和问题排查,同时在服务器遭受黑客攻击后,也可以查询黑客登录服务器的历史命令操作。但是黑客在入侵后,为了抹除痕迹,会删除 .bash_history 文件,这个就需...

墨痕诉清风的博客 1658

Autosar Dcm配置-App到Boot的跳转及1002回复配置及实现-基于ETAS软件

在软件刷写流程中,上位机(诊断仪)发送1002后,APP检查允许跳转boot后,在特定的ram(软复位不清除)写入指定置后通过触发软件复位来跳转到boot的。在APP跳转到Bootloader时,1002的回复有两种方式,一种是APP直接回复,然后跳转,另一种是APP回复NRC78,然后跳转,在Boot中回复。本文介绍这两种方式的实现。如果是在APP中回复,可以少发一个0x78,整体跳转时间可能会少一些。但是如果诊断在收到5002之后立马请求其他的服务,可能出现boot正在初始化而未正常接收到报文。

赞的博客 1560

C#模拟鼠标和键盘操作

本文旨在自己动手实现一个类似于“按键精灵”的桌面软件。第一部分介绍了简单的模拟方式,但是有些软件能够屏蔽掉这种简单模拟带来的效果,因此第二部分将介绍如何从驱动级层面进行模拟。“游戏外挂一般分为三个级别:初级是鼠标、键盘模拟,中级是Call游戏内部函数,读写内存,高级是抓包,封包的“脱机挂”(完全模拟客户端网络数据,不用运行游戏)。用C#写外挂的不是很多,大部分是C++,主要原因是MS的C#目前不支...

FanJin的博客 2万+

JAVA:Spring Boot3 集成 Spring AI 实现 Skill 开发

本文介绍了如何通过Spring Boot和Spring AI实现大模型技能(Skill)开发,让AI具备调用业务系统能力。文章首先解释了Skill的概念,即AI可调用的业务能力,如查询订单、天气等,并展示了执行流程和整体架构。然后详细介绍了实践样例,包括技术版本、Maven依赖配置、AI服务设置、ChatClient创建和Skill技能注册中心的实现。注册中心提供了技能的注册、查询、启用/禁用等功能,支持按类别管理技能,并能够获取所有可用技能列表。通过这种方式,开发者可以轻松为大模型扩展业务功能调用能力。

木头 626

C# WinForm 键盘快捷键的使用

C# WinForm 键盘快捷键的使用WinForm中定义快捷键有多种方式,这里简单说明平时用得多的两种。 1、响应 Form窗体的 KeyDown 事件 2、重载 ProcessCmdKey 方法

禾木 4550

材料仿真软件:Quantum Espresso_(15).声子与振动模式计算

通过上述步骤和代码示例,您应该能够使用 Quantum Espresso 进行声子与振动模式的计算。声子计算是材料科学研究中的重要工具,可以帮助我们更好地理解和设计材料的性能。希望本节内容对您有所帮助。

kkchenjj的博客 1185

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

发送linux键盘消息,在C#程序中模拟发送键盘按键消息

using System.Runtime.InteropServices;引入键盘事件函数[DllImport("user32.dll")]public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);参数:bVk:定义一个虚拟键码。键码值必须在1~254之间。bScan:定义该键...

weixin_39849762的博客 918

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C#屏蔽Alt+F4组合键

在开发的软件不希望用户关闭的情况下,或者我们不想用户回到桌面,这时候我们就需要屏蔽windows键,或者Alt + F4 键等。 //1.将窗体的属性KeyPrieview设置为true //keypreview属性为true的时候,就可以响应键盘事件 //2.在窗体KeyDown事件中加如下代码 private void Form1_KeyDown(object sender, ...

weixin_30485379的博客 1733

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

用C#实现低级Windows API键盘钩子

 用C#实现低级Windows API键盘钩子           一提到钩子(Hook)程序,通常都会想到是用C/C++编写的,难道托管代码(如C#)就毫无用武之地了吗,本文将要讲解的,就是如何在C#中实现键盘钩子。         .NET Framework对键盘事件只提供了一般级别的访问,如KeyPress、KeyUP、KeyDown等等,但是无法用于处理按键的组合,如

谢启东的专栏 6992
上一篇: C#中窗体屏蔽键盘按键
下一篇: ASP.NET 之四大常用状态(信息)保持方式
devgis
博客等级 码龄16年 52粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值