Visual Foxpro & Scanning :
Visual Foxpro is having great feature to connect any hardware device via windows class libraries, it may be Dynamic link Library (.dll), Object Linking and Embedding OCX, Foxpro Link Library (.Fll) or Window API calls.
These all above need's proper syntax & calling method parameters to use in programming. Passing parameter type and function /procedure returning value type.
Now coming toward our scanning project.Here we will use a easy & common way of scanning a document in vfp using windows API library call of "WIA.CommonDialog".
This library interacts with scanning or capturing device's driver provided by manufacturer of this device, stores basic properties and relevant data as windows API interface.
Well different manufacture uses different methods & properties of their dll/ocx declaration. That is not our headace because we are not interacting their .dlls or ocx to get directly data from driver libraries.
We will use WIA.CommonDialog to get any device's list of properties, names & values with VFP. This list of properties will help us to manage our desired out put format & relevent size of scanned document as our requirement.
Note:
* For adjusting properties of any device we have to communicate directly with device by calling functions of dll/ocx. WIA.CommonDialog will not allow to adjust properties values in some cases.
********************************************* * Programe : ReadScanner.prg
* Author : witten by Zia Mughal * CopyRight : Pcland Software Inc. Pakistan * http://www.pcland.com.pk **********************************
#DEFINE DPI = 150 && or what you want
LOCAL cdg As Object
cdg = CREATEOBJECT("Wia.CommonDialog")
DevMgr = CREATEOBJECT ("WIA.DeviceManager")
dev = cdg.ShowSelectDevice
clear
set printer to fullpath(sys(2003))+"\Property.txt"
set printer on
set device to printer
** May your loop vary according to device properties
for i=1 to 33 step 1
a= dev.Properties(i).name
b= dev.Properties(i).value
? alltrim(str(i)) + " : "
?? alltrim(a) + " = "
?? b
endfor
set device to screen
set printer off
set printer to
modify file fullpath(sys(2003))+'\Property.txt' noedit
********assume example of HP scanjet g4050
*dev.properties(24).value = 2 && 'Access Rights
*dev.properties(25).value = 300 && 'DPI horizontal
*dev.properties(26).value = 300 && 'DPI horizontal
*
*dev.properties(6149).value = 0 && 'x point to start scan
*dev.properties(6150).value = 0 && 'y point to start scan
*dev.properties(6151).value = 8.5 * DPI && 'Horizontal Extent
*dev.properties(6152).value = 11# * DPI && 'Vertical Extent for letter
Img = cdg.ShowAcquireImage
IF ISNULL(Img)
WAIT WINDOW TIMEOUT 1 "User Cancelled"
RETURN .F.
ENDIF
*dev.Transfer(WIA_FORMAT_JPEG)
Img.SaveFile(FULLPATH(sys(2003))+"\test.jpg")
************************************************
Enjoy the COFFEE!
My Respects!
Great utility man, love it
ReplyDeleteThanks a lot
Ernesto, i am comment as Dayron cause i create my google account with that name, i will need to change it but it is me Ernersto Paez.
Hi zia,
ReplyDeleteIts works
How to Win At a Casino – How to Play, Rules, Tips
ReplyDeleteIf you can win at a casino, you 거제 출장마사지 can 익산 출장샵 win some cash without losing anything. If you can't afford 울산광역 출장샵 to 제주 출장샵 lose anything, win some cash by putting a 제주 출장마사지 little