如何检查扫描仪是否已插入(C#、.NET TWAIN)

2024-05-31

我正在使用 .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(使用前将#替换为@)

如何检查扫描仪是否已插入(C#、.NET TWAIN) 的相关文章

随机推荐

  • 32位进程在64位操作系统上可以访问多少内存?

    在 Windows 上 正常情况下 32 位进程只能访问 2GB RAM 或通过 boot ini 文件中的特殊开关访问 3GB 在 64 位操作系统上运行 32 位进程时 有多少可用内存 是否有任何特殊的开关或设置可以改变这种情况 默认
  • 为什么这个 XHTML 表单无法验证?

    任何想法为什么这不会在这里验证 http validator w3 org validate by input http validator w3 org validate by input 表单输入标签似乎是错误的 但通读 XHTML 规
  • 任务.wait 和 continueWIth

    我有一个如下的任务 var task Task
  • 应用商店之外的应用内购买

    我正在为某个博物馆制作一个应用程序 应用程序的某些部分应仅限于购买印有代码的门票的游客 此代码可用于访问应用程序的受限部分 这是苹果可以拒绝的吗 苹果不可能拒绝你的应用程序 它改变了 iOS 开发者协议的严格准则 允许在 App Store
  • 32 位应用程序在 64 位操作系统上运行得更快还是更慢? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 JavaScript 从文本框控件中获取选定的文本

    我有一个文本框和一个链接按钮 当我编写一些文本 选择其中一些文本 然后单击链接按钮时 从文本框中选择的文本必须显示在消息框中 我该怎么做 当我单击下面文本框的提交按钮时 消息框必须显示洛雷姆 伊普苏姆 因为在区域中选择了 Lorem ips
  • 在 SSLwrapp() 之前在原始套接字上接收/发送,Python

    我想知道在包装原始套接字之前是否可以在原始套接字上接收 发送数据 我已经查看了文档并搜索了它 但找不到任何具体内容 我基本上想做的事情 client addr listeningSocket accept client recv 32 cl
  • iPhone Core Graphics 子视图的粗虚线

    我有一个UIView在其中我通过覆盖使用 Core Graphics 画了一条线drawRect 该视图还包含一个子视图 该子视图也绘制一条线 然而 虽然两个视图都使用几乎相同的代码 至少出于测试目的 但在它们上绘制的线看起来并不相同 正如
  • Nodejs + npm,在ntfs分区安装模块

    我在安装 npm 模块时遇到问题 NodeJS 安装在 Windows 主机上 Virtual Box 上运行的 Ubuntu 11 10 上 我的项目文件位于 NTFS 分区上 我必须与 Windows 共享它们 当我尝试安装某些 npm
  • mySQL 返回可能有重复项的随机行

    我正在尝试随机化一定数量的行 但假设数据库中只有 4 行 而我需要获得 6 个随机行 我希望有可能 即使表中有超过 6 行 产生重复的行行 这在 mySQL 中很容易实现吗 我当前的查询是这样的 SELECT FROM winners OR
  • admob 只发送测试广告而不是真实广告

    我按照以下说明进行操作https developers google com mobile ads sdk docs admob android quick start https developers google com mobile
  • JVM 是否在内部实例化抽象类的对象?

    我有一个抽象类及其具体子类 当我创建子类的对象时 它会自动调用超级构造函数 JVM内部是否创建了抽象类的对象 public abstract class MyAbstractClass public MyAbstractClass Syst
  • Swift:如何在 println 之后刷新标准输出?

    如何在 Swift 中刷新标准输出println命令 也就是说 Swift 相当于什么fflush stdout in C 您可以使用 fflush stdout 导入 libc 后 if os Linux import Glibc els
  • XmlSchema 删除重复类型

    我正在编写一个代码 该代码尝试读取一堆 xsd 文件并在 XmlSchemaSet 中编译架构 问题是这些 xsd 文件来自不同的来源 并且它们可能具有多次声明的元素 类型 我应该将其删除 否则 XmlSchemaSet 的编译方法将引发错
  • 列出推导式和条件?

    我想看看是否可以使用列表理解使这段代码变得更好 假设我有以下列表 a list HELLO FOO FO1BAR ROOBAR SHOEBAR regex list lambda x re search r FOO x re IGNOREC
  • WordPress 中的 jQuery.post()

    我目前正在为 Wordpress 编写一个聊天框插件 该插件使用 jQuery post 方法将数据发送到 php 文件 以便将输出写入 html 文件 该文件又将使用 jQuery 加载到聊天窗口 在我用来将聊天日志写入html文件的ph
  • 使用 Javascript 触发选择表单元素以显示其选项(打开下拉选项列表)

    这是标记
  • 提升::亚洲。消息是在哪个线程中发送的?

    我试图了解内部工作boost asio图书馆 这真的很棒 我编写了一个简单的客户端 用于向服务器发送一条消息 问题是 它真正在哪个线程中发送消息 自从我使用async write 方法 调用后立即返回并且不发送任何内容 我已经评论了io s
  • Nuxt JS 插件是否可以只运行一次?

    我有几个 VueX 操作 仅在服务器上运行 并从nuxtServerInit 它们向外部服务发出 HTTP 请求 这会减慢 TTFB 的速度 我想实现一个缓存插件 可以从 Redis 存储和检索值 目的是避免在每个请求的操作中发出 HTTP
  • 如何检查扫描仪是否已插入(C#、.NET TWAIN)

    我正在使用 NET TWAIN 代码http www codeproject com KB dotnet twaindotnet aspx msg 1007385 xx1007385xx http www codeproject com K