Wia 代码不适用于柯达 scanmate i1120 扫描仪

Wia code won`t work with kodak scanmate i1120 scanner

我重写了一个扫描文档并从文档中读取条形码的程序,该程序是用 vb6 编写的并在 windows xp 上工作。

这个新程序在 windows 10 上使用旧的 fujitsu fi-4129c2 扫描仪工作正常,但我无法使用新的 scanmate i1120 扫描仪工作。

我得到的错误在以下行:

MyImage = DirectCast(ConnectedScanner.Items(1).Transfer(WIA.FormatID.wiaFormatBMP), WIA.ImageFile)

我得到的错误是:

我知道代码的工作原理与我使用 fujitsu 扫描仪时的代码相同,但我似乎无法弄清楚是什么值让我在 scanmate 上出现错误。

我刚刚尝试了以下三行代码,它仍然给我同样的错误:

Dim CD As New CommonDialog
Dim F As ImageFile = CD.ShowAcquireImage(WiaDeviceType.ScannerDeviceType)
F.SaveFile("C:\Temp\WIA." + F.FileExtension)

原来是扫描仪的 WIA_DPS_PAGES 设置。

我尝试使用以下代码更改它:

With ConnectedScanner.Items(1)
        .Properties("3096").Value = 1
        .Properties("6146").Value = 2 
        .Properties("6147").Value = 300 'dots per inch/horizontal
        .Properties("6148").Value = 300 'dots per inch/vertical
        .Properties("6154").Value = -50 'brightness
        .Properties("6155").Value = -50 ' contrast
    End With

但是这并没有用,所以看了之后 WIA Scanning via Feeder

我将此页面上的代码转换为 vb 并使用了以下子代码:

Public Sub SetDeviceProperty(device As Device, propertyId As Integer, value As Object)
    Dim [property] As [Property] = FindProperty(device.Properties, propertyId)
    If [property] IsNot Nothing Then
        [property].let_Value(value)
    End If
End Sub

并使用 :

更改了设置
SetDeviceProperty(ConnectedScanner, 3096, 1)
SetDeviceProperty(ConnectedScanner, 6146, 2)
SetDeviceProperty(ConnectedScanner, 6147, 300)
SetDeviceProperty(ConnectedScanner, 6148, 300)
SetDeviceProperty(ConnectedScanner, 6154, -50)
SetDeviceProperty(ConnectedScanner, 6155, -50)