Para seleccionar el escaner es:
* Display TWAIN Select Source dialog
TWAIN_SelectImageSource(0)
Para obtener la lista de dispositivos Twain instalados:
Local Name As String
IF TWAIN_GetSourceList()<>0
Name = REPLICATE(CHR(0),64)
DO WHILE TWAIN_GetNextSourceName(@Name)<>0
Name = LEFT(Name,AT(CHR(0),Name)-1)
MESSAGEBOX(Name)
Name = REPLICATE(CHR(0),64)
ENDDO
ELSE
MESSAGEBOX("No TWAIN devices found.")
ENDIF
Para agrupar varios documentos en un solo archivo:
Local pagefile As String
Local i As Int
Local hdib As HANDLE
IF TWAIN_BeginMultipageFile("multipage.pdf")=0
FOR i = 1 TO N
pagefile = String.Format("page{0}.tif", i)
hdib = TWAIN_LoadNativeFromFilename(pagefile)
IF hdib<>0
TWAIN_DibWritePage(hdib)
DIB_Free(hdib)
ENDIF
IF TWAIN_LastErrorCode()<>0
EXIT
ENDIF
ENDFOR
TWAIN_EndMultipageFile()
ENDIF
IF TWAIN_LastErrorCode()<>0
TWAIN_ReportLastError("Unable to combine files.")
ENDIF
Para obtener un solo archivo de las paginas escaneadas del ADF:
Local hdib As HANDLE
TWAIN_SetHideUI(1)
TWAIN_SetFileAppendFlag(1)
IF TWAIN_OpenDefaultSource()<>0
TWAIN_SetXferMech(2)
TWAIN_SelectFeeder(1)
* Not guaranteed to work, check return = 1:
TWAIN_SetPixelType(1)
* Not guaranteed to work, check return = 1:
TWAIN_SetBitDepth(16)
TWAIN_SetResolution(300)
TWAIN_SetAutoDeskew(1)
TWAIN_SetPaperSize(4)
TWAIN_SetXferCount(-1)
TWAIN_SetAutoScan(1)
TWAIN_SetMultiTransfer(1)
TWAIN_BeginMultipageFile("c:\scanning\imagen.tif")
DO WHILE .T.
* If you can't use ThisForm.hWnd, pass 0:
hdib = TWAIN_Acquire(ThisForm.hWnd)
IF hdib=0
EXIT
ENDIF
* <your image processing here>
TWAIN_DibWritePage(hdib)
DIB_Free(hdib)
IF TWAIN_State()<6 THEN
EXIT
ENDIF
ENDDO
TWAIN_CloseSource()
TWAIN_EndMultipageFile()
ENDIF
IF TWAIN_LastErrorCode()<>0
TWAIN_ReportLastError("Unable to scan.")
ENDIF
En un escaner de cama plana:
Local i As Int
Local hdib As HANDLE
Local N As Int
* Change this to your value:
N = 2
TWAIN_SetHideUI(1)
TWAIN_SetFileAppendFlag(1)
IF TWAIN_OpenDefaultSource()<>0
TWAIN_SetXferMech(2)
* Not guaranteed to work, check return = 1:
TWAIN_SetPixelType(1)
* Not guaranteed to work, check return = 1:
TWAIN_SetBitDepth(16)
TWAIN_SetResolution(300)
TWAIN_SetAutoDeskew(1)
TWAIN_SetPaperSize(4)
TWAIN_SetXferCount(N)
TWAIN_SetMultiTransfer(1)
IF TWAIN_BeginMultipageFile("c:\scanning\imagen.tif")=0
FOR i = 1 TO N
* If you can't use ThisForm.hWnd, pass 0:
hdib = TWAIN_Acquire(ThisForm.hWnd)
IF hdib=0
EXIT
ENDIF
* <your image processing here>
TWAIN_DibWritePage(hdib)
DIB_Free(hdib)
ENDFOR
TWAIN_EndMultipageFile()
ENDIF
TWAIN_CloseSource()
ENDIF
IF TWAIN_LastErrorCode()<>0
TWAIN_ReportLastError("Unable to scan.")
ENDIF
El código antes proporcionado fue generado con el EZTwain Code Wizard.
No seria justo que me lo atribuyera yo.