1

Konu: scanner activex'i

Merhaba

Form içinden scanner ile evrak taramak istiyorum. bunun için vfp içinde bir "scanner control" activex'i  var ancak nasıl kullanılacağını bulamadım. Bunun için bir örnek verebilirmisiniz..

Şimdiden teşekkür ederim.

2

Re: scanner activex'i

cari hesap kartı ve stok kartlarında kullandıgım kod bununla webcam yada tarayicidan fotografi direkt olarak kaydedebiliyorum

bunun icin Eztw32.Dll kullanmak yeterli.


Visual Fox Pro
LcOldPhoto=Thisform.pf.pgkart.txtfoto.Value

 
Declare Integer TWAIN_SelectImageSource In Eztw32.Dll Integer HWnd
Declare Integer TWAIN_AcquireNative In Eztw32.Dll Integer nAppWind, Integer nPixelTypes
Declare Integer TWAIN_WriteNativeToFilename In Eztw32.Dll Integer nDIB, String cFilename
Declare Integer TWAIN_FreeNative In Eztw32.Dll Integer nDIB
 
Local cFilename, lnImageHandle, lnReply,lcSource,LcPath,LcFile
m.LcPath = Addbs(m.gcFotoDir)
m.LcFile = Alltrim(Thisform.pf.pgkart.txtckodu.Value) + ".BMP"
m.cFilename = m.LcPath+m.LcFile
 
* Kamera Veya Tarayıcıyı Seçmek
Surucu=TWAIN_SelectImageSource (Thisform.HWnd)
 
* Get the image
lnImageHandle = TWAIN_AcquireNative(0,0)
 
* Write the image to a disk file
lnReply = TWAIN_WriteNativeToFilename(lnImageHandle,m.cFilename)
 
* Release the image handle
TWAIN_FreeNative(lnImageHandle)
 
* Check for errors
If lnReply = 0
* Resim Kaydedildi
    Messagebox("Foto Kaydedildi..." + cFilename,64,'Fotoğraf Çekimi')
Else
* Resim Kaydedilmedi
    Messagebox("Foto Kaydedilmedi...",16,'Fotoğraf Çekimi')
Endif
 
 
If ! Empty(m.cFilename)
    With Thisform.pf.pgkart
        .txtfoto.Value=Justfname(m.cFilename)
        .image1.Picture = m.cFilename
        .Refresh()
    Endwith
Endif

3

Re: scanner activex'i

bu güzel işte. bana da lazım olacak ilerde... smile

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

4

Re: scanner activex'i

Üstadım...
Buraya en azından bir teşekkür cümleciği yazmam gerekiyor. Ama sanırım ne yazsam yeterli olmayacak.  Onun için en son yazmam gerekeni en başa yazdım.. Üstadım.

Şimdi biraz şamsımı zorlamak istiyorum. Tardığım resmi  formda bir image nin içine yerleştiriyorum. Tabiiki doğal olarak bu neredeyse bir pul büyüklüğünde olmak zorunda. Bunu bir command button tıklayarak herhangi bir editör çağırarak  yada vfp nin kendi olanaklarıyla bu resmi ayrı bir pencerede tam boyut olarak görme imkanımız varmı acaba ??

Teşekkür ederim

5

Re: scanner activex'i

buton  koduna
en basitinden asagidaki  gibi bir kod yazarak ...

bu yolla default image viewer açilir ve gercek boyutta goruntulenir

Visual Fox Pro
local oObject,cFileName

cFileName=thisform.txtfoto.value &&SYS(5)+CURDIR()+[foto\dgaz02.jpg]
oObject = CREATEOBJECT("Shell.Application")
oObject.Open(m.cFileName)

yada gibi..

Visual Fox Pro
local LcPhotoDir

LcPhotoDir=Sys(5)+Curdir()+"foto\"
 
If ! Empty(Thisform.pf.pgkart.txtfoto.Value)
    Declare Integer ShellExecute In "
Shell32.dll" ;
        integer HWnd, ;
        string lpVerb, ;
        string lpFile, ;
        string lpParameters, ;
        string lpDirectory, ;
        long nShowCmd
 
    =ShellExecute(0,"
Open",m.LcPhotoDir + Alltrim(Thisform.pf.pgkart.txtfoto.Value),"","",1)
 
&& sondaki 0 açar göstermez 1 minimize 3 maximize gösterir
 
    Clear Dlls
Else
    Messagebox("
Kayıtlı Resim Dosyası Yokki...",16,"Opps")
Endif

6

Re: scanner activex'i

Bir başka örnek WebCam görüntüsünu VFP formu üzerinde göstermek smile

Visual Fox Pro
LOCAL oForm

oForm = CREATEOBJECT("Tform")
oForm.Show(1)
* end of main
 
DEFINE CLASS Tform As Form
#DEFINE WM_CAP_START  0x0400
#DEFINE WM_CAP_DRIVER_CONNECT    (WM_CAP_START+10)
#DEFINE WM_CAP_DRIVER_DISCONNECT (WM_CAP_START+11)
#DEFINE WM_CAP_DRIVER_GET_CAPS   (WM_CAP_START+14)
#DEFINE WM_CAP_SET_PREVIEW       (WM_CAP_START+50)
#DEFINE WM_CAP_SET_OVERLAY       (WM_CAP_START+51)
#DEFINE WM_CAP_SET_PREVIEWRATE   (WM_CAP_START+52)
#DEFINE WM_CAP_GET_STATUS        (WM_CAP_START+54)
#DEFINE WM_CAP_GRAB_FRAME        (WM_CAP_START+60)
 
    Width=340
    Height=310
    Autocenter=.T.
    Caption="Using Video Capture"
    MinButton=.F.
    MaxButton=.F.
    hWindow=0
    hCapture=0
    capWidth=0
    capHeight=0
    capOverlay=0
 
    ADD OBJECT cmdGetFrame As CommandButton WITH Default=.T.,;
    Left=15, Top=264, Height=27, Width=90, Caption="Get Frame",;
    Enabled=.F.
 
    ADD OBJECT cmdPreview As CommandButton WITH Default=.T.,;
    Left=106, Top=264, Height=27, Width=100, Caption="Preview Video",;
    Enabled=.F.
 
    ADD OBJECT cmdClose As CommandButton WITH Cancel=.T.,;
    Left=250, Top=264, Height=27, Width=70, Caption="Close"
 
PROCEDURE Activate
    IF THIS.hWindow = 0
        DECLARE INTEGER GetFocus IN user32
        THIS.hWindow = GetFocus()
        THIS.CreateCaptureWindow
        THIS.DriverConnect
    ENDIF
 
PROCEDURE Destroy
    THIS.ReleaseCaptureWindow
 
PROCEDURE cmdClose.Click
    ThisForm.Release
 
PROCEDURE cmdGetFrame.Click
    ThisForm.GetFrame
 
PROCEDURE cmdPreview.Click
    ThisForm.StartPreview
 
PROCEDURE GetFrame
    THIS.msg(WM_CAP_GRAB_FRAME, 0,0)
 
PROCEDURE CreateCaptureWindow
#DEFINE WS_CHILD   0x40000000
#DEFINE WS_VISIBLE 0x10000000
 
    DECLARE INTEGER capCreateCaptureWindow IN avicap32;
        STRING lpszWindowName, LONG dwStyle,;
        INTEGER x, INTEGER y,;
        INTEGER nWidth, INTEGER nHeight,;
        INTEGER hParent, INTEGER nID
 
    THIS.hCapture = capCreateCaptureWindow("",;
        WS_CHILD+WS_VISIBLE,;
        10,8,320,240, THIS.hWindow, 1)
 
PROCEDURE DriverConnect
    THIS.msg(WM_CAP_DRIVER_CONNECT, 0,0)
    IF THIS.IsCaptureConnected()
        THIS.GetCaptureDimensions
        STORE .T. TO THIS.cmdGetFrame.Enabled,;
            THIS.cmdPreview.Enabled
        THIS.Caption = THIS.Caption + ": connected, " +;
            LTRIM(STR(THIS.capWidth)) + "x" +;
            LTRIM(STR(THIS.capHeight))
    ELSE
        THIS.Caption = THIS.Caption + ": failed to connect"
    ENDIF
 
PROCEDURE DriverDisconnect
    THIS.msg(WM_CAP_DRIVER_DISCONNECT, 0,0)
 
PROCEDURE ReleaseCaptureWindow
    IF THIS.hCapture <> 0
        THIS.DriverDisconnect
        DECLARE INTEGER DestroyWindow IN user32 INTEGER hWnd
        = DestroyWindow(THIS.hCapture)
        THIS.hCapture = 0
    ENDIF
 
PROCEDURE msg(msg, wParam, lParam, nMode)
    IF THIS.hCapture = 0
        RETURN
    ENDIF
 
    IF VARTYPE(nMode) <> "N" Or nMode=0
        DECLARE INTEGER SendMessage IN user32;
            INTEGER hWnd, INTEGER Msg,;
            INTEGER wParam, INTEGER lParam
        = SendMessage(THIS.hCapture, msg, wParam, lParam)
    ELSE
        DECLARE INTEGER SendMessage IN user32;
            INTEGER hWnd, INTEGER Msg,;
            INTEGER wParam, STRING @lParam
        = SendMessage(THIS.hCapture, msg, wParam, @lParam)
    ENDIF
 
FUNCTION IsCaptureConnected
* analyzing fCaptureInitialized member of the CAPDRIVERCAPS structure
#DEFINE CAPDRIVERCAPS_SIZE 44
    LOCAL cBuffer, nResult
    cBuffer = Repli(Chr(0),CAPDRIVERCAPS_SIZE)
    THIS.msg(WM_CAP_DRIVER_GET_CAPS, Len(cBuffer), @cBuffer, 1)
    THIS.capOverlay = buf2dword(SUBSTR(cBuffer,5,4))
    nResult = Asc(SUBSTR(cBuffer, 21,1))
RETURN (nResult<>0)
 
PROCEDURE GetCaptureDimensions
* reading uiImageWidth and uiImageHeight members
* of the CAPSTATUS structure
#DEFINE CAPSTATUS_SIZE 76
    LOCAL cBuffer
    cBuffer = Repli(Chr(0), CAPSTATUS_SIZE)
    THIS.msg(WM_CAP_GET_STATUS, Len(cBuffer), @cBuffer, 1)
    THIS.capWidth = buf2dword(SUBSTR(cBuffer,1,4))
    THIS.capHeight = buf2dword(SUBSTR(cBuffer,5,4))
 
PROCEDURE StartPreview
    THIS.msg(WM_CAP_SET_PREVIEWRATE, 30,0)
    THIS.msg(WM_CAP_SET_PREVIEW, 1,0)
    IF THIS.capOverlay <> 0
        THIS.msg(WM_CAP_SET_OVERLAY, 1,0)
    ENDIF
 
PROCEDURE StopPreview
    THIS.msg(WM_CAP_SET_PREVIEW, 0,0)
ENDDEFINE
 
FUNCTION buf2dword(lcBuffer)
RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
    BitLShift(Asc(SUBSTR(lcBuffer, 2,1)),  8) +;
    BitLShift(Asc(SUBSTR(lcBuffer, 3,1)), 16) +;
    BitLShift(Asc(SUBSTR(lcBuffer, 4,1)), 24)

7

Re: scanner activex'i

Selamlar
Yukarıdaki kodlar çok işime yaramama ramen şimdilerde dökümanı pdf olarak tarama ihtiyacı doğdu. Acaba Soykan üstadımızda yada diğer üstadlarımızda pdf destekleyen bir kod varmıdır acaba ?

Teşekkür ederim

8

Re: scanner activex'i

Gökçe Özçınar yazdı:

Selamlar
Yukarıdaki kodlar çok işime yaramama ramen şimdilerde dökümanı pdf olarak tarama ihtiyacı doğdu. Acaba Soykan üstadımızda yada diğer üstadlarımızda pdf destekleyen bir kod varmıdır acaba ?

Teşekkür ederim


PDF printer kullanabilirsin , dokuman tarar  yazdirma seceneginde onu secerek PDF dokuman uretebilirsin...

pdfFactory bu is icin oldukca iyi bir secenek... artisi her turlu dokumandan PDF uretebilirsin
http://www.fineprint.com/

9

Re: scanner activex'i

PDF Factory, harika bir şey ...

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

10

Re: scanner activex'i

Ben PrimoPDF kullaniyorum, ucretsiz, memnunum.

11

Re: scanner activex'i

ben de XFRX. ücretli ama vfp içinden istediğin gibi kontrol ediyorsun. zaten vfp ile yazılmış. vfp9 da dahil bütün foxpro versiyonlarını destekliyor. preview'i de vfp ye göre harika...

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

12

Re: scanner activex'i

bu konu kapananı çok olmuş fakat birşey sormam gerekiyor

"Bir başka örnek WebCam görüntüsünu VFP formu üzerinde göstermek "
altındaki kodu kullandım çalışıyor fakatbirden fazla görüntü aygıtı olunca (tv, kamera vb.) hangisiyle çekim yapacağımı nasıl belirliyebilirim ?