首页 > 其他分享 >基于键盘钩子实现扫码枪输入

基于键盘钩子实现扫码枪输入

时间:2024-04-19 17:15:48浏览次数:24  
标签:listener 扫码 函数 钩子 dll 键盘

基于键盘钩子实现扫码枪输入

dotNet工控上位机 dotNet工控上位机 更多资料,请关注微信公众号:dotNet工控上位机   3 人赞同了该文章

钩子

钩子是操作系统消息处理的一种机制。通过钩子,应用程序可以安装一个钩子回调过程让系统调用,从而监视系统中的消息队列。在这些消息到达目标窗口之前对这些消息进行处理。

特点

  • 钩子函数会降低操作系统的性能,因为它增加系统处理每一个消息的开销。
  • 操作系统支持多种类型的钩子,每种类型都提供了它特有的消息处理机制。
  • 对于每种类型的钩子,系统都维护一个各自独立的钩子链,钩子链是一个指向用户提供的回调函数钩子过程的链表指针。
  • 钩子尽量避免大量使用,对于一个钩子,一般是需要的时候安装,使用完成后,尽快卸载。

函数

键盘钩子的使用是基于Windows自带的dll,Windows API中的所有函数都包含在dll中。

3个最重要的DLL是:

1)kernel32.dll : 包含用于管理内存、进程和线程的各个函数

2)User32.dll : 包含用于执行用户界面任务的(如窗口创建和消息传送)的各个函数

3)GDI32.dll : 包含用于画图和现实文本的各个函数

使用

之所以要使用键盘钩子,主要是工业上有很多扫码枪是通过获取焦点,自动扫码的。但是如果想要实现无焦点输入,就需要使用键盘钩子,将键盘钩子的代码封装成了一个类,这样使用就非常简单了,使用代码如下:

1、创建钩子对象

  private ScanerHook listener = new ScanerHook();

2、钩子创建及卸载

            //创建钩子
            listener.Start();
            //钩子事件
            listener.ScanerEvent += Listener_ScanerEvent;    
            //窗体关闭后,卸载钩子
            this.FormClosed += (sender, e) =>
              {
                  listener.Stop();
              };

3、获取条码

        private void Listener_ScanerEvent(ScanerHook.ScanerCodes codes)
        {
            this.txt_Info.Text = codes.Result;
        }

实现

编辑于 2021-10-15 08:45 动态链接库(DLL) Microsoft Windows 操作系统

标签:listener,扫码,函数,钩子,dll,键盘
From: https://www.cnblogs.com/sexintercourse/p/18146428

相关文章

  • 企业微信hook 最新版 、企微输入验证码,二次扫码方案、发名片收消息功能,企业微信hook源
    ​产品说明在PC端企业微信客户端上发送自定义名片、封装企业微信功能为DLL,可与其他语言调用实现功能。DLL可以监听企业微信的所有消息接收和群消息,根据需求实现机器人、群发、自动消息推送、聊天机器人、监管数据收集等功能企业微信hook,企业微信功能api,自定义开发功能清......
  • 微信小程序中生命周期钩子函数
    微信小程序App的生命周期钩子函数有以下7个:   onLaunch(options):当小程序初始化完成时,会触发onLaunch(全局只触发一次)。   onShow(options):当小程序启动或从后台进入前台显示时,会触发onShow。   onHide():当小程序从前台进入后台时,会触发onHide。   onError(......
  • 键盘各按键的指令码
    -------------------------------------F1:0x1b0x4f0x50F2:0x1b0x4f0x51F3:0x1b0x4f0x52F4:0x1b0x4f0x53F5:0x1b0x5b0x310x350x7eF6:0x1b0x5b0x310x370x7eF7:0x1b0x5b0x310x380x7eF8:0x1b0x5b0x310x390x7eF9:0x1b0x5b0x320x300......
  • day02_我的Java学习笔记 (类型转换、+做连接符、变量自增自减运算、三元运算符、键盘
    Java语言基础知识1.类型转换1.1自动类型转换1.2表达式的自动类型转换1.3强制类型转换这里得出的结果为啥是-36呢???后面高级篇再细讲。2.运算符2.1算数运算符2.1.1基本算数运算符2.1.2案例:数值拆分2.2+符号做连接符【思考1】:a+'a'为啥......
  • 键盘操控
    #include<iostream>#include<windows.h>#include<conio.h>//控制台输入输出头文件usingnamespacestd;intmain(){ HANDLEhandle=GetStdHandle(STD_OUTPUT_HANDLE);//获取标准输出的句柄 COORDcoord={0,1};//保存光标位置 HANDLEhandle2=GetStdHandle(STD_OUTPUT_HA......
  • C++ 键盘操作
    1.单方移动#include<iostream>#include<windows.h>#include<conio.h>usingnamespacestd;intmain(){HANDLEhandle=GetStdHandle(STD_OUTPUT_HANDLE);COORDcoord={0,0};SetConsoleCursorPosition(handle,coord);cout<&l......
  • 键盘操控
    1/*2//单人游戏3#include<iostream>4#include<windows.h>5#include<conio.h>6usingnamespacestd;7intmain(intargc,char**argv){8HANDLEhandle=GetStdHandle(STD_OUTPUT_HANDLE);9COORDcoord={0,0};......
  • 点阵数显驱动IC/抗干扰数显驱动VK1650 SOP16/DIP16,内部集成有MCU数字接口、数据锁存
    产品品牌:永嘉微电/VINKA产品型号:VK1650封装形式:SOP16/DIP16概述VK1650是一种带键盘扫描电路接口的LED驱动控制专用芯片,内部集成有数据锁存器、LED驱动、键盘扫描等电路。SEG脚接LED阳极,GRID脚接LED阴极,可支持8SEGx4GRID的点阵LED显示。最大支持7x4按键。本芯片性能稳定质量......
  • wayland xmodmap 键盘按键映射失效,转 evremap。wps fcitx5 输入法失效
    waylandxmodmap键盘按键映射失效,转evremap。wpsfcitx5输入法失效date:2024-04-12Plasma升级时自动的把x11换成了wayland,导致xmodmap的映射失效了下面确认确实是wayland$echo"$XDG_SESSION_TYPE"wayland$env|grep-E-i'x11|xorg|wayland'XDG_SESSION......
  • selenium之鼠标键盘操作
    selenium之鼠标键盘操作一、鼠标1、导包:fromselenium.webdriver.common.action_chainsimportActionChains2、常规操作2.1左键单击search_ele=WebDriverWait(driver,15,0.5).until(EC.visibility_of_element_located(("id","search-input")))search_ele.send_k......