如何检查扫描仪是否已插入(C#,.NETTWAIN)来自www.codeproject.com/KB/dotnet/twaindotnet.aspx?msg=1007385#xx1007385xx的代码。当我尝试在未插入扫描仪的情况下扫描图像时,应用程序会冻结。如何使用TWAIN驱动程序检查设备是否已插入?也许我的问题太字面意思了,但是使用TWAINAPI,无法检查设备是否已插入,即连接和开机。TWAIN标准确实为此目的定义了一个称为CAP_DEVICEONLINE的特性,但这个特性设计得很糟糕,很少有驱动程序正确地实现它,而且在实践中也没有用。最接近的是:OpenDevice(MSG_OPENDS):几乎所有驱动程序在打开设备时都会检查设备是否准备就绪,并向用户显示错误对话框。没有用于抑制或检测此对话框的TWAIN机制某些驱动程序将允许用户更正问题并继续,在这种情况下,您(您的应用程序)永远不会知道存在问题。某些驱动程序将允许用户取消,在这种情况下MSG_OPENDS操作将失败,可能返回TWRC_CANCEL但可能返回TWRC_FAILURE即使设备处于脱机状态,某些TWAIN驱动程序也可以正常打开。此类驱动程序可能会向CAP_DEVICEONLINE查询返回FALSE。当您使用MSG_ENABLEDS启用设备时,此类驱动程序可能会检查设备是否在线,然后在设备不在线时向用户显示错误对话框,等等。除了和IMPO:WIA“更现代”,但扫描不如TWAIN全面,并且根据我的经验,不适用于文档进纸器的多页扫描。WIA的设计者和维护者似乎并不了解或关心低端消费平板以外的扫描仪。这对相机来说很棒。我从从CodeProject下载的相同源代码开始,但将MainFrame.cs中的大部分代码移到了Scanner类中。为了检查扫描错误,我调用了以下方法而不是直接调用Twain.Acquire:enumAcquireResult{OK=0,InitFailed=1,DeviceIDFailed=2,CapabilityFailed=3,UserInterfaceError=4}privatevoidStartScan(){if(!_msgFilter){_parent.Enabled=false;_msgFilter=真;Application.AddMessageFilter(这个);}AcquireResultar=_twain.Acquire();if(ar!=AcquireResult.OK){EndingScan();switch(ar){caseAcquireResult.CapabilityFailed:thrownewException("Scannercapabilitysetupfailed");caseAcquireResult.DeviceIDFailed:thrownewException("无法确定设备身份");caseAcquireResult.InitFailed:thrownewException("Scannerinitializationcasefailed")AcquireResult.UserInterfaceError:thrownewException("Twain用户界面错误");默认值:thrownewException("文档扫描失败");我通常在一个单独的线程上启动扫描事件,这样在扫描时应用程序就不会冻结。只需将此代码添加到TwainCommand(cmd)caseTwainCommand.Null:{EndingScan();tw.CloseSrc();Msgbox("没有设备或扫描已取消。");休息;}如果系统检测到如果找不到设备或扫描已被取消,则会出现此消息。您可以在注册表中注册。在:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{6bdd1fc6-810f-11d0-bec7-08002be2092f}每个检测到的扫描仪都在一个子项中枚举。从0000开始,检查CreateFileName值是否为空或有数据。如果它有数据,则表明它是已连接的扫描仪,如果它是空白的,则表明未连接。我尝试这样做,但不能使用TWAINmybe尝试WIAmybe试试这个:在按钮timer1.Interval=30000上运行扫描仪;switch(cmd){caseTwainCommand.TransferReady:{.........}默认:{timer1.Start();休息;}OnEventTimerTick以上就是C#学习教程:Howtocheckifscannerispluggedin(C#,.NETTWAIN)全部内容分享,如果对大家有用需要了解更多C#学习教程,希望大家多多关注——{EndingScan();tw.CloseSrc();}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
