WIA 2.0双面扫描

自Vista以来,Windows随附WIA 2.0(wiaaut.dll)。 根据以下知识库文章和我在各种论坛上的许多调查结果,使用WIA 2.0不再可能进行双面扫描。 然而,文章提到使用原生WIA 2.0,什么可以使双面扫描成为可能。 ( https://support.microsoft.com/en-us/kb/2709992 )

根据WIA 2.0文档( https://msdn.microsoft.com/en-us/library/windows/desktop/ms630196(v=vs.85).aspx ),可以进行双面扫描,但使用新的WIA_IPS_DOCUMENT_HANDLING_SELECT(3088 )财产。

我的问题是:

  • 我不知道如何使用原生的WIA,我怀疑使用C#时,它是不可能的。
  • 我找不到一种方法来设置新的WIA_IPS_DOCUMENT_HANDLING_SELECT属性,因为该属性不存在于我的wiaDevice属性中。 根据WiaDef.h,其属性ID仍然是3088,唯一可能的值是0x400(1024)。

如果有人可以帮助我(我想很多人),这将是非常感谢!

问候,

M.

Solutions Collecting From Web of "WIA 2.0双面扫描"

经过几个小时的搜索后,我在后面的帖子中发现了一条线索。 https://stackoverflow.com/a/7580686/3641369

正如我使用的单通道双面扫描仪,同时扫描的正面和背面。 通过设置设备属性(设备属性,而不是项目属性)Document_Handling_Select为5(Feeder + Duplex)和Pages为1并调用传输方法2次,我终于得到了扫描的字体和背面。

设置wiaDev.Properties [“文件处理选择”] = 5指定使用送纸器和扫描双面打印。

设置wiaDev.Properties [“Pages”] = 1指定扫描器应该在内存中保留1页,这允许在1次扫描过程中将页面的正面和背面保持在内存中。

if (duplex) { wiaDev.Properties["Document Handling Select"].set_Value(5); wiaDev.Properties["Pages"].set_Value(1); } 

获取Wia项目并设置项目属性,如颜色和dpi。

 var item = wiaDev.Items[1]; item.Properties["6146"].set_Value((int)clr); item.Properties["6147"].set_Value(dpi); item.Properties["6148"].set_Value(dpi); 

然后调用传输方法两次返回两个不同的图像

 var img = (ImageFile)wiaCommonDialog.ShowTransfer(item, FormatID.wiaFormatJPEG); ImageFile imgduplex = null; if(duplex) imgduplex = (ImageFile)wiaCommonDialog.ShowTransfer(item, FormatID.wiaFormatJPEG); 

希望这可以帮助别人!