我正在使用 .NET TWAIN 代码http://www.codeproject.com/KB/dotnet/twaindotnet.aspx?msg=1007385#xx1007385xx http://www.codeproject.com/KB/dotnet/twaindotnet.aspx?msg=1007385#xx1007385xx在我的应用程序中。
当我尝试在扫描仪未插入时扫描图像时,应用程序冻结。
如何使用 TWAIN 驱动程序检查设备是否已插入?
也许我太字面地理解了这个问题,但是使用 TWAIN API,无法检查设备是否已插入,即已连接并已开机。 TWAIN 标准确实为此目的定义了一个称为 CAP_DEVICEONLINE 的功能,但此功能的构思非常糟糕,而且很少有驱动程序正确实现它,因此在实践中它毫无用处。
您可以获得的最接近的是: 打开设备(MSG_OPENDS):几乎所有驱动程序都会在打开时检查设备是否就绪,并向用户显示错误对话框。没有 TWAIN 机制来抑制或检测此对话框某些驱动程序将允许用户纠正问题并继续,在这种情况下,您(您的应用程序)将永远不会知道存在问题。某些驱动程序将允许用户取消,在这种情况下,MSG_OPENDS 操作将失败,可能返回 TWRC_CANCEL,但也可能返回 TWRC_FAILURE
即使设备处于脱机状态,一些 TWAIN 驱动程序也可以正常打开。这样的司机mayCAP_DEVICEONLINE 查询返回 FALSE。当您使用 MSG_ENABLEDS 启用设备时,这样的驱动程序可能会执行设备在线检查,然后如果设备未在线,则会向用户显示错误对话框,依此类推,如上所述。
顺便说一句,IMPO:WIA“更现代”,但扫描功能也比 TWAIN 更不全面,而且根据我的经验,它无法用于从文档进纸器进行多页扫描。 WIA 的设计人员和维护人员似乎不了解或不关心低端消费平板以外的扫描仪。这对相机有好处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)