none
请教关于用VB.NET2008调用扫描仪 RRS feed

  • 问题

  • 请教,本人写了一个用VB.NET2008调用扫描仪的小程序,调用的是Eztw32.dll。
    语句为SMYY = TWAIN_AcquireToClipboard(Me.Handle, intT),扫描仪是佳能MP198,经测试扫描后各种功能正常,到单位后同样的开发环境,但扫描仪为HP M1005这时可以运行,无错误提示,就是没有图像传入。
    还请各位多多指教!谢谢!
    2010年9月8日 13:05

答案

  • 你好:

    请参照如下代码:

    Private Sub cmdScan_Click()
     Dim Ret As Long, PictureFile As String
    '定义一个返回值为长整型变量,及保存文件的文件名及路径变量
     PictureFile = App.Path & "\temp.bmp"
    '为文件名变量赋值
     'PicturFile is the temporary file "temp.bmp"
     'In "temp.bmp" the image will stored until the end of the action
     Ret = TWAIN_AcquireToFilename(Me.hwnd, PictureFile)
     If Ret = 0 Then
     'If the scan is successful
      picScan.Picture = LoadPicture(PictureFile)
      imgScan.Picture = LoadPicture(PictureFile)
      imgScan.Stretch = True
    
     'Load the temporary picture file
      ScrollAreaScan.ReSizeArea
     'Resize the picture control
      Kill PictureFile
     'Delete the temporary picture file
     Else
      MsgBox "Scan not successful!", vbCritical, "Scanning"
     End If
    End Sub
    

    http://topic.csdn.net/t/20030531/10/1858200.html
    http://www.vbgood.com/thread-84527-1-1.html

    希望对你有所帮助。

    2010年9月9日 6:24
    版主

全部回复

  • 经测试发现,扫描仪运行后剪贴板中有数据。但传不到定义的变量里。
    Dim bitmsm As Image '声明变量
    SMYY = TWAIN_AcquireToClipboard(Me.Handle, intT)           
    bitmsm = Clipboard.GetData(DataFormats.Bitmap)
    测试bitmsm为nothing,为什么在我家的机器里可以,在单位的机器里不行?
    请多指教!
    2010年9月8日 13:05
  • 通用一上午的测试,发现调用这个DLL在VB6中可以用,在VB2008中我家的机器可以,单位的不行。而且在单位里如中画图发现剪贴板中有扫描的数据,但在VB2008开发环境中TWAIN_AcquireToClipboard(Me.Handle, intT) 为空值,请问这是什么原因?应怎样解决?谢谢!

    2010年9月8日 13:10
  • 你好:

    请参照如下代码:

    Private Sub cmdScan_Click()
     Dim Ret As Long, PictureFile As String
    '定义一个返回值为长整型变量,及保存文件的文件名及路径变量
     PictureFile = App.Path & "\temp.bmp"
    '为文件名变量赋值
     'PicturFile is the temporary file "temp.bmp"
     'In "temp.bmp" the image will stored until the end of the action
     Ret = TWAIN_AcquireToFilename(Me.hwnd, PictureFile)
     If Ret = 0 Then
     'If the scan is successful
      picScan.Picture = LoadPicture(PictureFile)
      imgScan.Picture = LoadPicture(PictureFile)
      imgScan.Stretch = True
    
     'Load the temporary picture file
      ScrollAreaScan.ReSizeArea
     'Resize the picture control
      Kill PictureFile
     'Delete the temporary picture file
     Else
      MsgBox "Scan not successful!", vbCritical, "Scanning"
     End If
    End Sub
    

    http://topic.csdn.net/t/20030531/10/1858200.html
    http://www.vbgood.com/thread-84527-1-1.html

    希望对你有所帮助。

    2010年9月9日 6:24
    版主
  •  谢楼上的!此法我已试过如用文件来存储每次需确认是否覆盖文件,不太方便。

    后来我把家里的扫描仪拿到单位,安装后发现程序操作正常,怀疑是不是vb2008与HP M1005的驱动兼容性不好?

    2010年9月9日 21:38