扫描仪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
前段时间刚接完银联支付,完事后又接了微信支付,前段时间一直急着上线,微信的接入一直没有时间处理,今天我们就来整理一下微信支付的接入方法和要点. 配置: 首先呢微信支付需要通过审核,审核啥的准备工作我就 ...
随机推荐
- 安装Impala
1.默认安装好hadoop并且能正常启动(只需hdfs即可)2.安装如下rpm包(需要root权限 注意顺序) bigtop-utils-0.7.0+cdh5.8.2+0-1.cdh5.8.2.p0. ...
- hdu3534 树的直径变形
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3534 题意:n 之后 n-1条边,l,r,w:求出树上的最长路径以及最长路径的条数. // ...
- python urllib
在伴随学习爬虫的过程中学习了解的一些基础库和方法总结扩展 1. urllib 在urllib.request module中定义下面的一些方法 urllib.request.urlopen(url,d ...
- Codeforces Round #377 (Div. 2)
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; in ...
- JFreeChart
花了四个小时给同学写的.还行吧,原来都没有用过到处找资料写的. package DrawLine; import org.jfree.chart.ChartFactory; import org.jf ...
- 页面制作之HTML
标签 常用属性 id class style title - <a href ="/" title="收藏">收藏</a>(用于hove ...
- [RxJava]在学习RxJava中的错误理解
关于RxJava语法的问题与理解 最近看到一个blog-RxJava 写到关于Observable数据异步加载的介绍.针对fromCallable和just操作符在使用上的问题来跟大家针对代码进行 ...
- 两种让tableview返回顶部的方法
1. [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:_currentRow inSection:0] animat ...
- 关于The C compiler "arm-none-eabi-gcc" is not able to compile a simple test program. 的错误自省...
在 GCC ARM Embedded https://launchpad.net/gcc-arm-embedded/ 上面下载了个arm-none-eabi-gcc 用cmake 编译时 #指定C交叉 ...
- GitHub托管项目
1.进入Repositories->点击 new repositories; 2.输入Repository name 直接创建项目: 3.记录你的项目地址,如:https://github.co ...