扫描仪API接入大全:Twain, WIA 或 两者不具有.[换个思路 春暖花开]
最近做和扫描仪接入的扫描应用程序,深深感觉到了来自底层设备和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-scanner,http://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 或 两者不具有.[换个思路 春暖花开]的更多相关文章
- 微信公众平台开发,API接入与推送事件(1)
博客好久没有更新了,今天说说微信开发.微信开发的好多初学者都会又这样的迷惑,微信开发到底是什么?其实微信开发本质我和我们的网站开发没有太大的区别.我们常说的微信开发也就是公众号开,微信公众号分为三个类 ...
- 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 ...
- WINDOWS-API:API函数大全
操作系统除了协调应用程序的执行.内存分配.系统资源管理外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务是一个函数),可以帮肋应用程序达到开启视窗.描绘图形.使用周边设备的目的,由 ...
- Windows API函数大全(完整)
Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一 ...
- 微信企业红包api接入
项目描述:基于微信浏览器的H5页面,接入微信支付接口和微信红包接口 一.接入前准备条件 1.微信公众号 需要基于已认证的微信公众号承载该H5页面.该条件默认已具备,本文重点为红包接口. 2.微信支付商 ...
- [windows菜鸟]Windows API函数大全(完整)
Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一 ...
- 京东JOS API 接入使用笔记
商户开设了京东店.淘宝店,最近打算使用京东物流,需要使用京东仓库(京东店的订单使用京仓发货,淘宝等其他店使用京东云仓)发货,所以得从自家的ERP与京东沧海(ECLP)API对接,实现收发存. 首先得在 ...
- Windows API函数大全(精心总结)
WindowsAPI函数大全(精心总结) 目录 1. API之网络函数... 1 2. API之消息函数... 1 3. API之文件处理函数... 2 4. API之打印函数... 5 5. ...
- .NET接入微信支付(一)JS API接入 V3
前段时间刚接完银联支付,完事后又接了微信支付,前段时间一直急着上线,微信的接入一直没有时间处理,今天我们就来整理一下微信支付的接入方法和要点. 配置: 首先呢微信支付需要通过审核,审核啥的准备工作我就 ...
随机推荐
- FileStream
允许其他进程只读打开 New FileStream("路徑", FileMode.Append, FileAccess.Write, FileShare.Read) 允许其他进程以 ...
- nodejs复习05
stream 可读流 fs.pause()方法会使处于流动模式的流停止触发data事件,切换到非流动模式并让后续数据流在内部缓冲区 var fs = require('fs') var rs = fs ...
- 在php中使用strace、gdb、tcpdump调试工具
[转] http://www.syyong.com/php/Using-strace-GDB-and-tcpdump-debugging-tools-in-PHP.html 在php中我们最常使用调试 ...
- 25个 Git 进阶技巧
[ 原文] http://www.open-open.com/lib/view/open1431331496857.html 我已经使用git差不多18个月了,觉得自己对它应该已经非常了解.然后来自G ...
- 从零开始山寨Caffe·拾:IO系统(三)
数据变形 IO(二)中,我们已经将原始数据缓冲至Datum,Datum又存入了生产者缓冲区,不过,这离消费,还早得很呢. 在消费(使用)之前,最重要的一步,就是数据变形. ImageNet Image ...
- 在CentOS下利用Python+selenium获取腾讯首页的今日话题。
1.安装依赖包 yum install wget firefox gcc zlib zlib-devel Xvfb 2.安装setuptools 官网地址:https://pypi.python.or ...
- mac新手的烦恼
最近新换了mac,我换mac并非自愿.无论mac的性能有多好,我依然讨厌使用appstore下载软件的感觉,尤其在我一遍又一遍忘记自己的appID的时候.无奈我的thinkpad常常死机,最近又常倒腾 ...
- Asp.net 配置web.Config 在出错时跳转到相应页面
<!--<customErrors mode="On" defaultRedirect="error.aspx"> <erro ...
- Tomcat7安装配置 for Ubuntu
一.环境说明: 操作系统:Ubuntu 12.04.2 LTS Tomcat:apache-tomcat-7.0.52 二.下载 下载地址:http://tomcat.apache.org/ 这里下载 ...
- 移动端Web适配的两种做法思路总结
看了几篇文章,理一下网易跟淘宝移动端适配的思路,主要是参考 从网易与淘宝的font-size思考前端设计稿与工作流 像素相关概念 物理像素(physical pixel) 一个物理像素是显示器(手机屏 ...