本菜最近为公司写个处理扫描枪扫描到的字符的程序,基本功能就是接收扫描枪扫到的条码,然后做相关处理。无奈没有扫描枪(有一个在公司本部睡觉那╮(╯▽╰)╭)于是便有了模拟一个扫描枪的想法。

模拟扫描枪功能:向指定窗口的edit控件发送字符(条形码),并发送回车消息。

实现分析:要完成向指定窗口、指定控件发送字符,首先要完成的就是查找该窗口和该控件,可以使用FindWindow查找到指定的窗口,然后使用EnumChildWindows找到指定的控件即可。完成这个后即可使用SendMessage和PostMessage向该控件发送相关的信息。

相关的实现代码:

查找窗口并开始枚举子窗口

void CMetrologicSimulatorDlg::OnButtonSend() { UpdateData(); // m_StrCode 为相关的需要发送的字符 int len = m_StrCode.GetLength(); // buf 在使用完后要free掉,我的free在别处 buf = (char *)malloc(len); strcpy(buf, (LPCSTR)m_StrCode); HWND metrologic; // xxxxxx为你的窗口名字,用spy++得到 metrologic = ::FindWindow(NULL, "xxxxxx"); if (metrologic) EnumChildWindows(metrologic, EnumProc, 0); }

CALLBACK函数,看到上面EnumChildWindows的第二个参数了吗?

这个便是查找指定控件(包含窗口的查找)和向该控件发送消息的功能实现

char *buf; BOOL CALLBACK EnumProc(HWND hWnd, LPARAM) { TCHAR className[128]; do { if (!IsWindowVisible(hWnd)) { return true; } // 用spy++得到className GetClassName(hWnd, className, sizeof className); // traversal control if (strcmp(className, "Edit")==0) { CWnd::FromHandle(hWnd)->SendMessage(WM_SETTEXT, strlen(buf), (LPARAM)buf); //CWnd::FromHandle(hWnd)->SendMessage(WM_KEYDOWN, VK_RETURN, NULL); CWnd::FromHandle(hWnd)->PostMessage(WM_KEYDOWN, VK_RETURN, NULL); //break; } // // traversal dialog(#32770) // if (strcmp(className, "#32770")==0) // { // EnumChildWindows(hWnd, EnumProc, 0); // } // // traversal AfxWnd42 // if (strcmp(className,"AfxWnd42")==0) // { // EnumChildWindows(hWnd, EnumProc, 0); // } // // traversal AfxWnd42d // if (strcmp(className,"AfxWnd42d")==0) // { // EnumChildWindows(hWnd, EnumProc, 0); // } //该注释以上注释掉的代码为未使用下面一行代码时使用的代码 EnumChildWindows(hWnd, EnumProc, 0); hWnd=::GetNextWindow(hWnd,GW_HWNDNEXT); } while (hWnd!=NULL); return FALSE; }

第一个,需要注意的地方就是,接收字符的程序需要处理回车消息,所以我们在发送回车消息的时候要使用PostMessage而不是SendMessage,what?google 和baidu都知道啊。

第二个,需要注意的地方就是程序默认向当前可见窗口中的所有EditBox发送字符和回车消息。

简单的扫描枪模拟程序相关推荐

  1. C#串口扫描枪的简单实现

    串口扫描枪的简单实现 基于串口通讯的扫描枪的实现,主要借助SerialPort类,表示串行端口资源.实现很简单: 工具:usb转RS232转接头/个,扫描枪/套, 扫描枪串口接入转接头,转接头插电脑 ...

  2. Winform让扫描枪听话,防止在有焦点的地方就扫码输入的尴尬

    关注点: 1.扫描枪在扫描到条码后会在有焦点的地方显示扫描到的条码并且可设置扫码后添加回车换行让我很尴尬 2.怎样拦截扫码输入,扫描到条码就自动会嘀一声.不要这么智能行不行.瞎BB 需求详解 公司生产 ...

  3. 手机做条码扫描传给电脑_有线和无线扫描枪常用测试工具和软件你知道哪些?...

    当我们购买到一款扫描枪之后,往往需要对扫描枪的进行一些简单的测试,如果测试,有需要使用到哪些工具进行测试呢,接下来我们按照不同接口分类为大家分别介绍一下: USB接口类型 ①USB-KBW接口:USB ...

  4. 扫描枪连接zebra打印机打印条码标签无需电脑

    在一些流水线生产的现场,需要及时打印条码标签,由于现场环境和空间限制,无法摆放电脑或者通过连接电脑来打印条码标签的速度太慢, 瑞科条码特提供了一套扫描枪直接连接条码打印机,扫描枪扫描条码之后直接打印输 ...

  5. SilverLight 条码 扫描枪 MVVM(转载)

    目前做SL项目时,遇到条码的问题. 客户需要通过条码来加快工作效率以及减少错误.有条码,自然便引入扫描枪这个东西.不解释. 关键点是:扫描枪每次扫描完毕会触发回车 这是解决问题的关键! 现有两种情景: ...

  6. 使用c#捕获usb扫描枪扫描二维码、条形码结果(支持中文版)

    之前在18年写过一个使用c#捕获usb扫描枪扫描二维码.条形码结果,当时我是没有遇到需要使用中文的情况,因为二维码都是我自己控制生成的,如果遇到中文,我会提前进行编码编程unicode编码,所以,没有 ...

  7. 使用c#捕获usb扫描枪扫描二维码、条形码结果

    关于扫描枪对包含中文的二维码扫描的处理,请参考使用c#捕获usb扫描枪扫描二维码.条形码结果(支持中文版),本文之后的评论不再回复关于中文扫码的问题 另外,请仔细阅读本文,因为中文支持博文仅修改了本文 ...

  8. E3000Y影像二维扫描枪(配YoKo引擎开发板)的串口调试

    实现E3000Y影像二维扫描枪串口调试 概述 一.E3000Y影像二维扫描枪 二.YoKo引擎开发板 三.E3000Y识读引擎 四.串口调试控制方式步骤 1.模块安装步骤 2.串口调试步骤 3.扫描二 ...

  9. 蓝牙扫描枪直连蓝牙打印机

    蓝牙扫描枪直连蓝牙打印机,全新的仓库.物流管理新方案,简单高效,无需电脑,即可扫码打印标签,条码可以根据自己需要重新生成,标签内容可以自定义排版. 蓝牙连接扫描枪打印演示视频地址:https://v. ...

最新文章

  1. 镜像打包工具clonezilla
  2. linux线程-sysconf系统变量
  3. 巧用PowerShell维护Win2008服务器作业
  4. 不自定义异步方法的线程池默认使用SimpleAsyncTaskExecutor
  5. 作者:杨丽彬,华侨大学信息管理系讲师。
  6. javascript热身运动-了解最基本的知识
  7. 服务器系统bsd,BSD操作系统大盘点:其它BSD变体
  8. 解决JQuery EasyUI onLoadSuccess执行两次的问题
  9. ConcurrentHashMap 实现细节(转)
  10. oc语言学习之基础知识点介绍(三):类方法、封装以及继承的介绍
  11. [Spark]Spark RDD 指南二 初始化
  12. FFmpeg之视频/图片镜像旋转(十三)
  13. Apache Rewrite 拟静态配置
  14. python统计pdf下载_python科学计算 第二版
  15. Android性能优化—TraceView的使用
  16. 功耗:Leakage Power
  17. 大话西游片尾曲-一生所爱(世界是巨大的枷锁,你不得不重复自己或是别人的生活)
  18. 陈经纶2021年高考成绩查询时间,北京2021高考成绩排名榜单,北京各高中高考成绩喜报...
  19. b2b2c电商平台系统
  20. 英语中 distinct 与 distinctive 的区别

热门文章

  1. 计算机系统的组成一般不包括,计算机系统的基本组成,一般应包括哪些
  2. 对qq空间动手--selenium实践
  3. 2022年5个人工智能趋势
  4. 金融结构的经济学分析
  5. python有n元人民币、其中有10元的_Python笔记-古灵阁小精灵金加隆金币兑换人民币...
  6. php获取网卡mac地址吗,php获取网卡MAC地址步骤详解
  7. 三个基本的布尔逻辑算符是_什么是布尔逻辑运算符?布尔逻辑运算符一共有哪几种?...
  8. 工作4年从美团、360、陌陌、百度、阿里、京东面试回来感想
  9. 【LittleVGL】stm32f412-discovery探索板-ft6x06驱动问题
  10. swiper 滑动图片垂直居中