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


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

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

     

    钩子

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

    特点

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

    函数

    键盘钩子的使用是基于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
  • 相关阅读:
    232 前端之JQuery:JQuery扩展和事件
    231 前端之JQuery:JQuery文档操作
    Result(ActionResult、JsonResult、JavaScriptResult等)
    Controller传值到前端页面的几种方式
    若要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet(转载)
    过滤器
    ViewData丶ViewBag和TempData
    C#-绘图双缓冲
    Kafka的架构原理,你真的理解吗?
    Kafka的架构原理,你真的理解吗?
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/16256735.html
Copyright © 2020-2023  润新知