我正在评估VintaSoft.net控件和Atalasoft DotTain Image Capture。我对大多数的定义和关键词感到非常困惑。
所以我问这个问题是因为我觉得我在拉拉的土地上。是否可以听或让扫描仪告诉我的应用程序有扫描的图像,我可以处理它?
这个想法是有一个winservice,它等待扫描仪扫描一些东西,然后处理图像。
我只使用过TWAIN和WIA的本机接口,所以我不能保证它们之上的其他层。但是,关于TWAIN,确实存在一些机制,允许通知应用程序捕获数据。我相信这是用STI.dll处理的,STI.dll是一个在Windows 2000+上可用的旧库。有关详细信息,请查阅StiCreateInstance。
如果你选择走WIA路线,它会简单得多。您可以注册以接收事件,例如"扫描"按钮或"图像创建"事件。然后你所需要做的就是处理这些事件来获得图像。其中最困难的部分是找到实现您想要的功能的硬件。
微软有一个WIA自动化库,它使许多这样的任务变得更加简单。它可以由脚本语言使用。
我们最近将TWAIN集成到了我们的一个应用程序中。我们研究了WIA,但最终TWAIN更灵活,可以连接到VRS(虚拟重新扫描)等应用程序。最后是"拉",你请求扫描,然后等待扫描仪。VRS的一个好处是,它是TWAIN调用和设备之间的软件,因此,它可以处理一些事情,其中之一是它几乎可以永远等待纸张放入料斗进行扫描。这允许"启动"扫描作业,然后等待纸张,还允许将其他页面添加到单元中。
如果你正在寻找一个更"推送"的东西,那么就找一个支持ftp/smb/电子邮件等的扫描仪或MFP,让它扫描,你就可以简单地监控文件夹或POP3邮箱。
您还可以查看MFP设备,这些设备包括(有时需要额外费用)帮助的工具,如Xerox的Template、Lexmark的LDSS、HP的DSS。
以下是我们基于扫描仪集成的.NET TWAIN代码的链接:http://www.codeproject.com/KB/dotnet/twaindotnet.aspx
[edit-如果是我,我会看看adzm的答案;-p]
据我所知,常规TWAIN是扫描仪的"拉动",而不是"推动"。我很可能错了。。。
我希望这种接口确实适用于高端、大容量的扫描仪(你知道,台球桌大小的扫描仪),但不适用于普通消费者扫描仪(AFAIK)。
为了与.NET(以及在此之前的COM)一起使用,我一直使用ImageMan进行管理。
可以让扫描仪告诉您的应用程序有扫描的图像。我不熟悉VintaSoft.net控件和Atalasoft DotTain Image Capture,但对于一些twain SDK,每次扫描后都会触发OnPostTransfer/OnPostAllTransfer事件,以便您可以"通知"您的winservice