Hello.
No, unfortunately not. I have set Device_PageSize property to 0 and also used Device_GetSupportedUnitsOfMeasure. However, the result remains the same. The unit remains in inches. I currently have the millimeters converted to inches until I solve the problem. See source code.
Code: Select all
' disable application UI
scanImagesButton.Enabled = False
' try to use TWAIN device manager 2.x
VSTwain1.DeviceManager_IsTwain2Compatible = twain2CheckBox.Value
' if TWAIN device manager 2.x is not available
If Not VSTwain1.DeviceManager_IsAvailable Then
' try to use TWAIN device manager 1.x
VSTwain1.DeviceManager_IsTwain2Compatible = Not twain2CheckBox.Value
' if TWAIN device manager 1.x is not available
If Not VSTwain1.DeviceManager_IsAvailable Then
MsgBox "TWAIN device manager is not available."
' enable application UI
scanImagesButton.Enabled = True
Exit Sub
End If
End If
VSTwain1.Register "User", "Email", "Serial"
' open the device manager
If Not VSTwain1.DeviceManager_Open() Then
MsgBox VSTwain1.errorString
' enable application UI
scanImagesButton.Enabled = True
Exit Sub
End If
' if no devices are found in the system
If VSTwain1.DeviceManager_DeviceCount = 0 Then
MsgBox "Devices are not found."
' enable application UI
scanImagesButton.Enabled = True
Exit Sub
End If
' if device is NOT selected
If Not VSTwain1.DeviceManager_ShowDefaultDeviceSelectionDialog() Then
MsgBox "Device is not selected."
' enable application UI
scanImagesButton.Enabled = True
Exit Sub
End If
' select the device selected by user
VSTwain1.DeviceManager_SelectedDeviceIndex = VSTwain1.DeviceManager_DefaultDeviceIndex
If VSTwain1.Error Then
MsgBox VSTwain1.errorString
' enable application UI
scanImagesButton.Enabled = True
Exit Sub
End If
' open the device
VSTwain1.Device_Open
If VSTwain1.Error Then
MsgBox VSTwain1.errorString
' enable application UI
scanImagesButton.Enabled = True
Exit Sub
End If
VSTwain1.Device_GetSupportedUnitsOfMeasure
VSTwain1.Device_PageSize = 0
' set scan settings
VSTwain1.Device_ShowUI = False ' showUiCheckBox.Value
VSTwain1.Device_ShowIndicators = showIndicatorsCheckBox.Value
VSTwain1.Device_DisableAfterAcquire = Not VSTwain1.Device_ShowUI
VSTwain1.Device_TransferMode = TRANSFERMODE_Memory
' Scanbereich auslesen
Dim nLeft As Single, nTop As Single, nRight As Single, nBottom As Single
VSTwain1.Device_GetImageLayout nLeft, nTop, nRight, nBottom
nLeft = 0
nTop = 0
nRight = 210
nBottom = 297
' Scanbereich festlegen
VSTwain1.Device_SetImageLayout nLeft, nTop, nRight, nBottom
VSTwain1.Device_ImagePixelType = PIXELTYPE_Gray
VSTwain1.Device_ImageBitDepth = 16
' acquire image(s) from the device
Dim acquireModalState1 As ACQUIREMODALSTATE
Do
acquireModalState1 = VSTwain1.Device_AcquireImageModal
Select Case acquireModalState1
Case VSTwainLibCtl.ACQUIREMODALSTATE_ImageAcquired
' set a bitmap in the picture box
Set Image1.Picture = VSTwain1.AcquiredImages_GetImage(0)
imageCount = imageCount + 1
totalImageCount = totalImageCount + 1
' dispose an acquired image
VSTwain1.AcquiredImages_Clear
Case VSTwainLibCtl.ACQUIREMODALSTATE_ScanCanceled
MsgBox "Scan is canceled."
Case VSTwainLibCtl.ACQUIREMODALSTATE_ScanFailed
MsgBox "Scan is failed: " + VSTwain1.errorString
End Select
Loop While acquireModalState1 <> VSTwainLibCtl.ACQUIREMODALSTATE_None
' close the device
VSTwain1.Device_Close
' close the device manager
VSTwain1.DeviceManager_Close
' enable application UI
scanImagesButton.Enabled = True
The help is unfortunately not very helpful either, as it is written for .Net only and some functions (e.g. AddHandler) do not work in VB6.
I don't want to rewrite the old VB6 application completely, because it should only be extended by the scan function...
Furthermore, there are some other problems with the scanning.
The image when scanning in grayscale is displayed totally distorted and broken into stripes!? See screenshot.
https://share-your-photo.com/46e654ba50
Scanner : Brother MFC-2710DN