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

钩子
钩子是操作系统消息处理的一种机制。通过钩子,应用程序可以安装一个钩子回调过程让系统调用,从而监视系统中的消息队列。在这些消息到达目标窗口之前对这些消息进行处理。
特点
- 钩子函数会降低操作系统的性能,因为它增加系统处理每一个消息的开销。
- 操作系统支持多种类型的钩子,每种类型都提供了它特有的消息处理机制。
- 对于每种类型的钩子,系统都维护一个各自独立的钩子链,钩子链是一个指向用户提供的回调函数钩子过程的链表指针。
- 钩子尽量避免大量使用,对于一个钩子,一般是需要的时候安装,使用完成后,尽快卸载。
函数
键盘钩子的使用是基于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;
}
实现

标签:listener,扫码,函数,钩子,dll,键盘 来源: https://www.cnblogs.com/sexintercourse/p/16256735.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。