最近做和扫描仪接入的扫描应用程序,深深感觉到了来自底层设备和WINDOWS协议的恶意。软件专业,对计算机深层次通知机制和协议,以及与之相连接的机器的接入协议和一些参数,当时并木有认真学习和了解,前一阵子做到真是泪流满面。Codeproject,Stackoverflow,codeplex都要翻到吐了。感觉有时间还是把计算机底层认真去学习了解一下才是正道。先在这里把我前一阵的探索和想到的解决方法列出来给同样需要的朋友们吧。

扫描仪API最初只有TWAIN协议,之后增加了WIA协议,直到最近有做到富士通的一款扫描仪,它两者均不具有,接入必须使用其驱动软件,这也增加了我们开发扫描仪接入程序的难度。

 

后面是我总结的关于这三种情况的解决方法。

1. TWAIN。此为大多数扫描仪基础协议。是C++语言写的底层dll,对.NET来说通过DLLImport来扩展使用。

此协议是很底层的协议,并没有经过.NET封装。所以要了解其机制才能更好的来开发。

官网及其样例:http://www.twain.org/scannerserviceproviders/specification-and-tools.html

CNBLOG其实有蛮多文章。先是介绍:http://www.cnblogs.com/cjcanet/articles/2393416.html

需要DLL导入的.h文件 http://www.cnblogs.com/len0031/p/3483821.html

.NET 例子:http://www.codeproject.com/Articles/1376/NET-TWAIN-image-scannerhttp://www.codeproject.com/Articles/171666/Twain-for-WPF-Applications-Look-Ma-No-Handles

(这两个例子我都试验过。都很OK的)

2. WIA。假如您的机器支持这个协议。那就可以好好开心一下了。.NET已经封装了支持该协议的dll。在COM里导入Windows.Image.Acquire.dll 使用其方法就可以了。一般最近念头的扫描仪都支持这个协议。

介绍和使用:http://www.cnblogs.com/lvfeilong/archive/2013/01/28/khgskjdfhg.html

3. 假如都不支持!很不幸楼主就碰到了,这个时候就要转换思维了。经过研究发现

所有的扫描仪自带的驱动程序及其扩展程序都会有扫描完成后触发一个程序的功能(比如扫描完成后打开image程序来进行浏览)

此处就要找到其配置文件。一般都在appdata,rooming中等。可以关键字来进行搜索。

找到后更改配置用compare(推荐TortoiseMerge) 来进行前后对比,发现相应修改的地方。

之后就是启动自己程序的时候把该文件修改了,换成触发自己程序的路径,这样每次扫描到图片都会触发自己写的程序并传入图片的args。关闭时候再修复就好了。

 

这种思路有种曲线救国的意思,其实有时候应用层的开发感觉就是这样。并不需要大力气来做底层的事情,而是你需要找到相应的支持就好了。

站在巨人的肩膀上便是这种感觉吧。剩下的时间便可以做提升自己的事情了。

程序员也是需要生活的!

扫描仪API接入大全:Twain, WIA 或 两者不具有.[换个思路 春暖花开]的更多相关文章

  1. 微信公众平台开发,API接入与推送事件(1)

    博客好久没有更新了,今天说说微信开发.微信开发的好多初学者都会又这样的迷惑,微信开发到底是什么?其实微信开发本质我和我们的网站开发没有太大的区别.我们常说的微信开发也就是公众号开,微信公众号分为三个类 ...

  2. Aittit.attilax超级框架 api 规划大全

    Aittit.attilax超级框架 api 规划大全 1 Api分类2 1.1 核心2 1.2 属性2 1.3 CSS2 1.4 选择器2 1.5 文档处理3 1.6 筛选3 1.7 事件3 1.8 ...

  3. WINDOWS-API:API函数大全

    操作系统除了协调应用程序的执行.内存分配.系统资源管理外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务是一个函数),可以帮肋应用程序达到开启视窗.描绘图形.使用周边设备的目的,由 ...

  4. Windows API函数大全(完整)

    Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一 ...

  5. 微信企业红包api接入

    项目描述:基于微信浏览器的H5页面,接入微信支付接口和微信红包接口 一.接入前准备条件 1.微信公众号 需要基于已认证的微信公众号承载该H5页面.该条件默认已具备,本文重点为红包接口. 2.微信支付商 ...

  6. [windows菜鸟]Windows API函数大全(完整)

    Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一 ...

  7. 京东JOS API 接入使用笔记

    商户开设了京东店.淘宝店,最近打算使用京东物流,需要使用京东仓库(京东店的订单使用京仓发货,淘宝等其他店使用京东云仓)发货,所以得从自家的ERP与京东沧海(ECLP)API对接,实现收发存. 首先得在 ...

  8. Windows API函数大全(精心总结)

    WindowsAPI函数大全(精心总结)    目录 1. API之网络函数... 1 2. API之消息函数... 1 3. API之文件处理函数... 2 4. API之打印函数... 5 5. ...

  9. .NET接入微信支付(一)JS API接入 V3

    前段时间刚接完银联支付,完事后又接了微信支付,前段时间一直急着上线,微信的接入一直没有时间处理,今天我们就来整理一下微信支付的接入方法和要点. 配置: 首先呢微信支付需要通过审核,审核啥的准备工作我就 ...

随机推荐

  1. ubuntu14.04下配置Java环境以及安装最新版本的eclipse

    首先是配置JDK 步骤一:下载最新版本的JDK,链接:http://www.oracle.com/technetwork/java/javase/downloads/index.html 步骤二:首先 ...

  2. 用户名 不在 sudoers文件中

    切换到root用户,然后加上某个账户 pzdn@CentOs$ su #输入root密码 root@CentOs cd /etc/ chmod 770 sudoers vim sudoers # 找到 ...

  3. html5与css3

    Video属性 符号:<video>这里插入视频</video> Drag 和 drop属性 为了使元素可拖动,把 draggable 属性设置为 true: 2.       ...

  4. 【原】iOS学习之tableView的常见BUG

    1.TableView头视图不随视图移动,头视图出现错位 错误原因:tableView的 UITableViewStyle 没有明确的声明 解决方法:在tableView声明的时候明确为 UITabl ...

  5. 采用Lambda表达式快速实现实体模型对象转换到DTO

    在项目中,采用code first时建立的模型对象不能直接用于数据传输,需要从新根据需求建立Dto对象 为什么需要建立Dto对象呢? DTO即数据传输对象.之前不明白有些框架中为什么要专门定义DTO来 ...

  6. windows 10 开始菜单和cortana无法工作的问题

    过了个周末,到了实验室一开机发现报了个关键错误:开始菜单和cortana无法工作. 经过一番google ,发现问题,原来是360禁用了一个服务导致,这个服务是UserManager. 我直接去开启发 ...

  7. js基础3

    内置对象 内置对象就是JS提供的一套工具箱,我们通过内置可以很方便的进行一些操作. Math对象: Math.ceil() //向上取整,天花板 Math.floor() //向下取整,地板 Math ...

  8. eclipse常见问题

    使用eclipse进入断点,当弹出"Confir Perspective Switch"视图时,选择"Yes".之后每次进入断点都会自动切换到debug视图. ...

  9. 基础2.通过Ajax获得servlet数据(最基础)

    案列一:从服务器的得到输出的数据 Jsp界面 <script type="text/javascript" src="test.js"></s ...

  10. Java jvisualvm简要说明

    jvisualvm能干什么:监控内存泄露,跟踪垃圾回收,执行时内存.cpu分析,线程分析... jvisualvm已经被集成在jdk1.6以上的版本中(不是jre).自身运行需要最低jdk1.6版本, ...