MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    capturar imagem de uma web cam

    avatar
    crb_sjrp
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 172
    Registrado : 21/03/2013

    capturar imagem de uma web cam Empty capturar imagem de uma web cam

    Mensagem  crb_sjrp 15/10/2014, 04:25

    galera preciso de uma forca

    tenho o seguinte codigo queria adaptar pra usar no access



    Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long
    Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function ReleaseCapture Lib "USER32" () As Long
    Private Const WM_CAP_DRIVER_CONNECT As Long = 1034
    Private Const WM_CAP_DRIVER_DISCONNECT As Long = 1035
    Private Const WM_CAP_GRAB_FRAME As Long = 1084
    Private Const WM_CAP_EDIT_COPY As Long = 1054
    Private Const WM_CAP_DLG_VIDEOFORMAT As Long = 1065
    Private Const WM_CAP_DLG_VIDEOSOURCE As Long = 1066
    Private Const WM_CLOSE = &H10
    Private mCapHwnd As Long
    Vamos usar as funções :

    capCreateCaptureWindow - DLL avicap32.dll - Inicia a webCam;
    SendMessage - biblioteca User32 - envia mensagem para uma janela do Windows;
    ReleaseCapture - biblioteca User32 - libera a conexão com a webCam;
    Todo o trabalho é feita pelas APIs do Windows que capturam a imagem da webCam e salvam na área de transferência do Windows (ClipBoard). Ao final basta obter a imagem do ClipBoard e exibir no controle PictureBox.

    O código do botão que inicia a webCam é o seguinte :

    Private Sub cmdIniciaWebCam_Click()
    'Inicia a câmera
    mCapHwnd = capCreateCaptureWindow("captura Janela", 0, 0, 0, 320, 240, Me.hwnd, 0)
    SendMessage mCapHwnd, WM_CAP_DRIVER_CONNECT, 0, 0
    End Sub
    O código do evento Timer do controle Timer é dado a seguir. Inicialmente o controle não esta ativo pois sua propriedade Enabled esta com o valor padrão igual a False;

    Private Sub Timer1_Timer()

    'Exibe imagem continua no pictubox
    Clipboard.Clear
    SendMessage mCapHwnd, WM_CAP_GRAB_FRAME, 0, 0
    SendMessage mCapHwnd, WM_CAP_EDIT_COPY, 0, 0
    Picture1.Picture = Clipboard.GetData
    DoEvents
    End Sub
    Para ativar o vídeo contínuo capturando toda a operação realizada pela WebCam usamos o código abaixo do botão : Ativar Vídeo Contínuo;

    Private Sub cmdAtivaVideoContinuo_Click()
    Timer1.Enabled = True
    Timer1.Interval = 50
    End Sub
    Para capturar a imagem da webCam e exibir no controle PictureBox usamos o seguinte código:

    Private Sub cmdCapturaImagem_Click()

    'Captura a imagem atual
    Clipboard.Clear
    SendMessage mCapHwnd, WM_CAP_GRAB_FRAME, 0, 0
    SendMessage mCapHwnd, WM_CAP_EDIT_COPY, 0, 0
    Picture1.Picture = Clipboard.GetData
    End Sub
    A seguir temos o código do botão que encerra a conexão com a webCam e o código que encerra a aplicação. Repetimos o código no evento Form_Terminate pois se o usuário encerrar o formulário a webCam também será desconectada:

    Private Sub cmdEncerraWebCam_Click()
    'Desliga a câmera
    SendMessage mCapHwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0
    End Sub

    Private Sub cmdSair_Click()
    End
    End Sub

    Private Sub Form_Terminate()
    'Desliga a câmera
    SendMessage mCapHwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0
    End Sub
    avatar
    crb_sjrp
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 172
    Registrado : 21/03/2013

    capturar imagem de uma web cam Empty Re: capturar imagem de uma web cam

    Mensagem  crb_sjrp 15/10/2014, 15:11

    galera consegui fazer a web cam abrir agora tenho um duvida como salvar a imagem um uma pasta como jpg

    entao vamos la a cam ta aparecendo num formulario capturando em tempo real preciso tirar uma foto salvar numa pasta pra eu localizar e enserir no cadastro de moradores do meu condominio


    entenderao se puderen me ajudar
    avatar
    crb_sjrp
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 172
    Registrado : 21/03/2013

    capturar imagem de uma web cam Empty Re: capturar imagem de uma web cam

    Mensagem  crb_sjrp 15/10/2014, 15:13

    usei esse modulo

    Option Compare Database
    Public Const WM_USER = &H400
    Type POINTAPI
    x As Long
    Y As Long
    End Type
    Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
    Declare Function SendMessageS Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As String) As Long
    Public Const WM_CAP_START = WM_USER
    Public Const WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1
    Public Const WM_CAP_SET_CALLBACK_ERROR = WM_CAP_START + 2
    Public Const WM_CAP_SET_CALLBACK_STATUS = WM_CAP_START + 3
    Public Const WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4
    Public Const WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5
    Public Const WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6
    Public Const WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7
    Public Const WM_CAP_GET_USER_DATA = WM_CAP_START + 8
    Public Const WM_CAP_SET_USER_DATA = WM_CAP_START + 9
    Public Const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10
    Public Const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11
    Public Const WM_CAP_DRIVER_GET_NAME = WM_CAP_START + 12
    Public Const WM_CAP_DRIVER_GET_VERSION = WM_CAP_START + 13
    Public Const WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14
    Public Const WM_CAP_FILE_SET_CAPTURE_FILE = WM_CAP_START + 20
    Public Const WM_CAP_FILE_GET_CAPTURE_FILE = WM_CAP_START + 21
    Public Const WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22
    Public Const WM_CAP_FILE_SAVEAS = WM_CAP_START + 23
    Public Const WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24
    Public Const WM_CAP_FILE_SAVEDIB = WM_CAP_START + 25
    Public Const WM_CAP_EDIT_COPY = WM_CAP_START + 30
    Public Const WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35
    Public Const WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36
    Public Const WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41
    Public Const WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42
    Public Const WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43
    Public Const WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44
    Public Const WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45
    Public Const WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46
    Public Const WM_CAP_SET_PREVIEW = WM_CAP_START + 50
    Public Const WM_CAP_SET_OVERLAY = WM_CAP_START + 51
    Public Const WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52
    Public Const WM_CAP_SET_SCALE = WM_CAP_START + 53
    Public Const WM_CAP_GET_STATUS = WM_CAP_START + 54
    Public Const WM_CAP_SET_SCROLL = WM_CAP_START + 55
    Public Const WM_CAP_GRAB_FRAME = WM_CAP_START + 60
    Public Const WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61
    Public Const WM_CAP_SEQUENCE = WM_CAP_START + 62
    Public Const WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63
    Public Const WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64
    Public Const WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65
    Public Const WM_CAP_SET_MCI_DEVICE = WM_CAP_START + 66
    Public Const WM_CAP_GET_MCI_DEVICE = WM_CAP_START + 67
    Public Const WM_CAP_STOP = WM_CAP_START + 68
    Public Const WM_CAP_ABORT = WM_CAP_START + 69
    Public Const WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70
    Public Const WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71
    Public Const WM_CAP_SINGLE_FRAME = WM_CAP_START + 72
    Public Const WM_CAP_PAL_OPEN = WM_CAP_START + 80
    Public Const WM_CAP_PAL_SAVE = WM_CAP_START + 81
    Public Const WM_CAP_PAL_PASTE = WM_CAP_START + 82
    Public Const WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83
    Public Const WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84
    Public Const WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85
    Public Const WM_CAP_END = WM_CAP_SET_CALLBACK_CAPCONTROL
    Type CAPDRIVERCAPS
    wDeviceIndex As Long
    fHasOverlay As Long
    fHasDlgVideoSource As Long
    fHasDlgVideoFormat As Long
    fHasDlgVideoDisplay As Long
    fCaptureInitialized As Long
    fDriverSuppliesPalettes As Long
    hVideoIn As Long
    hVideoOut As Long
    hVideoExtIn As Long
    hVideoExtOut As Long
    End Type
    Type CAPSTATUS
    uiImageWidth As Long
    uiImageHeight As Long
    fLiveWindow As Long
    fOverlayWindow As Long
    fScale As Long
    ptScroll As POINTAPI
    fUsingDefaultPalette As Long
    fAudioHardware As Long
    fCapFileExists As Long
    dwCurrentVideoFrame As Long
    dwCurrentVideoFramesDropped As Long
    dwCurrentWaveSamples As Long
    dwCurrentTimeElapsedMS As Long
    hPalCurrent As Long
    fCapturingNow As Long
    dwReturn As Long
    wNumVideoAllocated As Long
    wNumAudioAllocated As Long
    End Type
    Type CAPTUREPARMS
    dwRequestMicroSecPerFrame As Long
    fMakeUserHitOKToCapture As Long
    wPercentDropForError As Long
    fYield As Long
    dwIndexSize As Long
    wChunkGranularity As Long
    fUsingDOSMemory As Long
    wNumVideoRequested As Long
    fCaptureAudio As Long
    wNumAudioRequested As Long
    vKeyAbort As Long
    fAbortLeftMouse As Long
    fAbortRightMouse As Long
    fLimitEnabled As Long
    wTimeLimit As Long
    fMCIControl As Long
    fStepMCIDevice As Long
    dwMCIStartTime As Long
    dwMCIStopTime As Long
    fStepCaptureAt2x As Long
    wStepCaptureAverageFrames As Long
    dwAudioBufferSize As Long
    fDisableWriteCache As Long
    End Type
    Type CAPINFOCHUNK
    fccInfoID As Long
    lpData As Long
    cbData As Long
    End Type
    Type VIDEOHDR
    lpData As Long
    dwBufferLength As Long
    dwBytesUsed As Long
    dwTimeCaptured As Long
    dwUser As Long
    dwFlags As Long
    dwReserved(3) As Long
    End Type
    Declare Function capCreateCaptureWindowA Lib "avicap32.dll" ( _
    ByVal lpszWindowName As String, _
    ByVal dwStyle As Long, _
    ByVal x As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Integer, _
    ByVal hwndParent As Long, ByVal nID As Long) As Long
    Declare Function capGetDriverDescriptionA Lib "avicap32.dll" ( _
    ByVal wDriver As Integer, _
    ByVal lpszName As String, _
    ByVal cbName As Long, _
    ByVal lpszVer As String, _
    ByVal cbVer As Long) As Boolean
    Public Const IDS_CAP_BEGIN = 300
    Public Const IDS_CAP_END = 301
    Public Const IDS_CAP_INFO = 401
    Public Const IDS_CAP_OUTOFMEM = 402
    Public Const IDS_CAP_FILEEXISTS = 403
    Public Const IDS_CAP_ERRORPALOPEN = 404
    Public Const IDS_CAP_ERRORPALSAVE = 405
    Public Const IDS_CAP_ERRORDIBSAVE = 406
    Public Const IDS_CAP_DEFAVIEXT = 407
    Public Const IDS_CAP_DEFPALEXT = 408
    Public Const IDS_CAP_CANTOPEN = 409
    Public Const IDS_CAP_SEQ_MSGSTART = 410
    Public Const IDS_CAP_SEQ_MSGSTOP = 411
    Public Const IDS_CAP_VIDEDITERR = 412
    Public Const IDS_CAP_READONLYFILE = 413
    Public Const IDS_CAP_WRITEERROR = 414
    Public Const IDS_CAP_NODISKSPACE = 415
    Public Const IDS_CAP_SETFILESIZE = 416
    Public Const IDS_CAP_SAVEASPERCENT = 417
    Public Const IDS_CAP_DRIVER_ERROR = 418
    Public Const IDS_CAP_WAVE_OPEN_ERROR = 419
    Public Const IDS_CAP_WAVE_ALLOC_ERROR = 420
    Public Const IDS_CAP_WAVE_PREPARE_ERROR = 421
    Public Const IDS_CAP_WAVE_ADD_ERROR = 422
    Public Const IDS_CAP_WAVE_SIZE_ERROR = 423
    Public Const IDS_CAP_VIDEO_OPEN_ERROR = 424
    Public Const IDS_CAP_VIDEO_ALLOC_ERROR = 425
    Public Const IDS_CAP_VIDEO_PREPARE_ERROR = 426
    Public Const IDS_CAP_VIDEO_ADD_ERROR = 427
    Public Const IDS_CAP_VIDEO_SIZE_ERROR = 428
    Public Const IDS_CAP_FILE_OPEN_ERROR = 429
    Public Const IDS_CAP_FILE_WRITE_ERROR = 430
    Public Const IDS_CAP_RECORDING_ERROR = 431
    Public Const IDS_CAP_RECORDING_ERROR2 = 432
    Public Const IDS_CAP_AVI_INIT_ERROR = 433
    Public Const IDS_CAP_NO_FRAME_CAP_ERROR = 434
    Public Const IDS_CAP_NO_PALETTE_WARN = 435
    Public Const IDS_CAP_MCI_CONTROL_ERROR = 436
    Public Const IDS_CAP_MCI_CANT_STEP_ERROR = 437
    Public Const IDS_CAP_NO_AUDIO_CAP_ERROR = 438
    Public Const IDS_CAP_AVI_DRAWDIB_ERROR = 439
    Public Const IDS_CAP_COMPRESSOR_ERROR = 440
    Public Const IDS_CAP_AUDIO_DROP_ERROR = 441
    Public Const IDS_CAP_STAT_LIVE_MODE = 500
    Public Const IDS_CAP_STAT_OVERLAY_MODE = 501
    Public Const IDS_CAP_STAT_CAP_INIT = 502
    Public Const IDS_CAP_STAT_CAP_FINI = 503
    Public Const IDS_CAP_STAT_PALETTE_BUILD = 504
    Public Const IDS_CAP_STAT_OPTPAL_BUILD = 505
    Public Const IDS_CAP_STAT_I_FRAMES = 506
    Public Const IDS_CAP_STAT_L_FRAMES = 507
    Public Const IDS_CAP_STAT_CAP_L_FRAMES = 508
    Public Const IDS_CAP_STAT_CAP_AUDIO = 509
    Public Const IDS_CAP_STAT_VIDEOCURRENT = 510
    Public Const IDS_CAP_STAT_VIDEOAUDIO = 511
    Public Const IDS_CAP_STAT_VIDEOONLY = 512
    Public Const WS_BORDER = &H800000
    Public Const WS_CAPTION = &HC00000
    Public Const WS_SYSMENU = &H80000
    Public Const WS_CHILD = &H40000000
    Public Const WS_VISIBLE = &H10000000
    Public Const WS_OVERLAPPED = &H0&
    Public Const WS_MINIMIZEBOX = &H20000
    Public Const WS_MAXIMIZEBOX = &H10000
    Public Const WS_THICKFRAME = &H40000
    Public Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)
    Public Const SWP_NOMOVE = &H2
    Public Const SWP_NOSIZE = 1
    Public Const SWP_NOZORDER = &H4
    Public Const HWND_BOTTOM = 1
    Public Const HWND_TOPMOST = -1
    Public Const HWND_NOTOPMOST = -2
    Public Const SM_CYCAPTION = 4
    Public Const SM_CXFRAME = 32
    Public Const SM_CYFRAME = 33
    Public Const WS_EX_TRANSPARENT = &H20&
    Public Const GWL_STYLE = (-16)
    Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Declare Function lStrCpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
    Declare Function lStrCpyn Lib "kernel32" Alias "lstrcpynA" (ByVal lpString1 As Any, ByVal lpString2 As Long, ByVal iMaxLength As Long) As Long
    Declare Sub RtlMoveMemory Lib "kernel32" (ByVal hpvDest As Long, ByVal hpvSource As Long, ByVal cbCopy As Long)
    Declare Sub hmemcpy Lib "kernel32" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
    Declare Function SetWindowPos Lib "USER32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Declare Function DestroyWindow Lib "USER32" (ByVal hndw As Long) As Boolean
    Declare Function GetSystemMetrics Lib "USER32" (ByVal nIndex As Long) As Long
    Declare Function SetWindowText Lib "USER32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
    Public lwndC As Long
    Function capSetCallbackOnError(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
    capSetCallbackOnError = SendMessage(lwnd, WM_CAP_SET_CALLBACK_ERROR, 0, lpProc)
    End Function
    Function capSetCallbackOnStatus(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
    capSetCallbackOnStatus = SendMessage(lwnd, WM_CAP_SET_CALLBACK_STATUS, 0, lpProc)
    End Function
    Function capSetCallbackOnYield(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
    capSetCallbackOnYield = SendMessage(lwnd, WM_CAP_SET_CALLBACK_YIELD, 0, lpProc)
    End Function
    Function capSetCallbackOnFrame(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
    capSetCallbackOnFrame = SendMessage(lwnd, WM_CAP_SET_CALLBACK_FRAME, 0, lpProc)
    End Function
    Function capSetCallbackOnVideoStream(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
    capSetCallbackOnVideoStream = SendMessage(lwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, lpProc)
    End Function
    Function capSetCallbackOnWaveStream(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
    capSetCallbackOnWaveStream = SendMessage(lwnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, lpProc)
    End Function
    Function capSetCallbackOnCapControl(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
    capSetCallbackOnCapControl = SendMessage(lwnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, lpProc)
    End Function
    Function capSetUserData(ByVal lwnd As Long, ByVal lUser As Long) As Boolean
    capSetUserData = SendMessage(lwnd, WM_CAP_SET_USER_DATA, 0, lUser)
    End Function
    Function capGetUserData(ByVal lwnd As Long) As Long
    capGetUserData = SendMessage(lwnd, WM_CAP_GET_USER_DATA, 0, 0)
    End Function
    Function capDriverConnect(ByVal lwnd As Long, ByVal I As Integer) As Boolean
    capDriverConnect = SendMessage(lwnd, WM_CAP_DRIVER_CONNECT, I, 0)
    End Function
    Function capDriverDisconnect(ByVal lwnd As Long) As Boolean
    capDriverDisconnect = SendMessage(lwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0)
    End Function
    Function capDriverGetName(ByVal lwnd As Long, ByVal szName As Long, ByVal wSize As Integer) As Boolean
    capDriverGetName = SendMessage(lwnd, YOURCONSTANTMESSAGE, wSize, szName)
    End Function
    Function capDriverGetVersion(ByVal lwnd As Long, ByVal szVer As Long, ByVal wSize As Integer) As Boolean
    capDriverGetVersion = SendMessage(lwnd, WM_CAP_DRIVER_GET_VERSION, wSize, szVer)
    End Function
    Function capDriverGetCaps(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
    capDriverGetCaps = SendMessage(lwnd, WM_CAP_DRIVER_GET_CAPS, wSize, s)
    End Function
    Function capFileSetCaptureFile(ByVal lwnd As Long, szName As String) As Boolean
    capFileSetCaptureFile = SendMessageS(lwnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, szName)
    End Function
    Function capFileGetCaptureFile(ByVal lwnd As Long, ByVal szName As Long, wSize As String) As Boolean
    capFileGetCaptureFile = SendMessageS(lwnd, WM_CAP_FILE_SET_CAPTURE_FILE, wSize, szName)
    End Function
    Function capFileAlloc(ByVal lwnd As Long, ByVal dwSize As Long) As Boolean
    capFileAlloc = SendMessage(lwnd, WM_CAP_FILE_ALLOCATE, 0, dwSize)
    End Function
    Function capFileSaveAs(ByVal lwnd As Long, szName As String) As Boolean
    capFileSaveAs = SendMessageS(lwnd, WM_CAP_FILE_SAVEAS, 0, szName)
    End Function
    Function capFileSetInfoChunk(ByVal lwnd As Long, ByVal lpInfoChunk As Long) As Boolean
    capFileSetInfoChunk = SendMessage(lwnd, WM_CAP_FILE_SET_INFOCHUNK, 0, lpInfoChunk)
    End Function
    Function capFileSaveDIB(ByVal lwnd As Long, ByVal szName As Long) As Boolean
    capFileSaveDIB = SendMessage(lwnd, WM_CAP_FILE_SAVEDIB, 0, szName)
    End Function
    Function capEditCopy(ByVal lwnd As Long) As Boolean
    capEditCopy = SendMessage(lwnd, WM_CAP_EDIT_COPY, 0, 0)
    End Function
    Function capSetAudioFormat(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
    capSetAudioFormat = SendMessage(lwnd, WM_CAP_SET_AUDIOFORMAT, wSize, s)
    End Function
    Function capGetAudioFormat(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Long
    capGetAudioFormat = SendMessage(lwnd, WM_CAP_GET_AUDIOFORMAT, wSize, s)
    End Function
    Function capGetAudioFormatSize(ByVal lwnd As Long) As Long
    capGetAudioFormatSize = SendMessage(lwnd, WM_CAP_GET_AUDIOFORMAT, 0, 0)
    End Function
    Function capDlgVideoFormat(ByVal lwnd As Long) As Boolean
    capDlgVideoFormat = SendMessage(lwnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0)
    End Function
    Function capDlgVideoSource(ByVal lwnd As Long) As Boolean
    capDlgVideoSource = SendMessage(lwnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0)
    End Function
    Function capDlgVideoDisplay(ByVal lwnd As Long) As Boolean
    capDlgVideoDisplay = SendMessage(lwnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0)
    End Function
    Function capDlgVideoCompression(ByVal lwnd As Long) As Boolean
    capDlgVideoCompression = SendMessage(lwnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0)
    End Function
    Function capGetVideoFormat(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Long
    capGetVideoFormat = SendMessage(lwnd, WM_CAP_GET_VIDEOFORMAT, wSize, s)
    End Function
    Function capGetVideoFormatSize(ByVal lwnd As Long) As Long
    capGetVideoFormatSize = SendMessage(lwnd, WM_CAP_GET_VIDEOFORMAT, 0, 0)
    End Function
    Function capSetVideoFormat(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
    capSetVideoFormat = SendMessage(lwnd, WM_CAP_SET_VIDEOFORMAT, wSize, s)
    End Function
    Function capPreview(ByVal lwnd As Long, ByVal F As Boolean) As Boolean
    capPreview = SendMessage(lwnd, WM_CAP_SET_PREVIEW, F, 0)
    End Function
    Function capPreviewRate(ByVal lwnd As Long, ByVal wMS As Integer) As Boolean
    capPreviewRate = SendMessage(lwnd, WM_CAP_SET_PREVIEWRATE, wMS, 0)
    End Function
    Function capOverlay(ByVal lwnd As Long, ByVal F As Boolean) As Boolean
    capOverlay = SendMessage(lwnd, WM_CAP_SET_OVERLAY, F, 0)
    End Function
    Function capPreviewScale(ByVal lwnd As Long, ByVal F As Boolean) As Boolean
    capPreviewScale = SendMessage(lwnd, WM_CAP_SET_SCALE, F, 0)
    End Function
    Function capGetStatus(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
    capGetStatus = SendMessage(lwnd, WM_CAP_GET_STATUS, wSize, s)
    End Function
    Function capSetScrollPos(ByVal lwnd As Long, ByVal lpP As Long) As Boolean
    capSetScrollPos = SendMessage(lwnd, WM_CAP_SET_SCROLL, 0, lpP)
    End Function
    Function capGrabFrame(ByVal lwnd As Long) As Boolean
    capGrabFrame = SendMessage(lwnd, WM_CAP_GRAB_FRAME, 0, 0)
    End Function
    Function capGrabFrameNoStop(ByVal lwnd As Long) As Boolean
    capGrabFrameNoStop = SendMessage(lwnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0)
    End Function
    Function capCaptureSequence(ByVal lwnd As Long) As Boolean
    capCaptureSequence = SendMessage(lwnd, WM_CAP_SEQUENCE, 0, 0)
    End Function
    Function capCaptureSequenceNoFile(ByVal lwnd As Long) As Boolean
    capCaptureSequenceNoFile = SendMessage(lwnd, WM_CAP_SEQUENCE_NOFILE, 0, 0)
    End Function
    Function capCaptureStop(ByVal lwnd As Long) As Boolean
    capCaptureStop = SendMessage(lwnd, WM_CAP_STOP, 0, 0)
    End Function
    Function capCaptureAbort(ByVal lwnd As Long) As Boolean
    capCaptureAbort = SendMessage(lwnd, WM_CAP_ABORT, 0, 0)
    End Function
    Function capCaptureSingleFrameOpen(ByVal lwnd As Long) As Boolean
    capCaptureSingleFrameOpen = SendMessage(lwnd, WM_CAP_SINGLE_FRAME_OPEN, 0, 0)
    End Function
    Function capCaptureSingleFrameClose(ByVal lwnd As Long) As Boolean
    capCaptureSingleFrameClose = SendMessage(lwnd, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0)
    End Function
    Function capCaptureSingleFrame(ByVal lwnd As Long) As Boolean
    capCaptureSingleFrame = SendMessage(lwnd, WM_CAP_SINGLE_FRAME, 0, 0)
    End Function
    Function capCaptureGetSetup(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
    capCaptureGetSetup = SendMessage(lwnd, WM_CAP_GET_SEQUENCE_SETUP, wSize, s)
    End Function
    Function capCaptureSetSetup(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
    capCaptureSetSetup = SendMessage(lwnd, WM_CAP_SET_SEQUENCE_SETUP, wSize, s)
    End Function
    Function capSetMCIDeviceName(ByVal lwnd As Long, ByVal szName As Long) As Boolean
    capSetMCIDeviceName = SendMessage(lwnd, WM_CAP_SET_MCI_DEVICE, 0, szName)
    End Function
    Function capGetMCIDeviceName(ByVal lwnd As Long, ByVal szName As Long, ByVal wSize As Integer) As Boolean
    capGetMCIDeviceName = SendMessage(lwnd, WM_CAP_GET_MCI_DEVICE, wSize, szName)
    End Function
    Function capPaletteOpen(ByVal lwnd As Long, ByVal szName As Long) As Boolean
    capPaletteOpen = SendMessage(lwnd, WM_CAP_PAL_OPEN, 0, szName)
    End Function
    Function capPaletteSave(ByVal lwnd As Long, ByVal szName As Long) As Boolean
    capPaletteSave = SendMessage(lwnd, WM_CAP_PAL_SAVE, 0, szName)
    End Function
    Function capPalettePaste(ByVal lwnd As Long) As Boolean
    capPalettePaste = SendMessage(lwnd, WM_CAP_PAL_PASTE, 0, 0)
    End Function
    Function capPaletteAuto(ByVal lwnd As Long, ByVal iFrames As Integer, ByVal iColor As Long) As Boolean
    capPaletteAuto = SendMessage(lwnd, WM_CAP_PAL_AUTOCREATE, iFrames, iColors)
    End Function
    Function capPaletteManual(ByVal lwnd As Long, ByVal fGrab As Boolean, ByVal iColors As Long) As Boolean
    capPaletteManual = SendMessage(lwnd, WM_CAP_PAL_MANUALCREATE, fGrab, iColors)
    End Function
    Function MyFrameCallback(ByVal lwnd As Long, ByVal lpVHdr As Long) As Long
    Debug.Print "FrameCallBack"
    Dim VideoHeader As VIDEOHDR
    Dim VideoData() As Byte
    RtlMoveMemory VarPtr(VideoHeader), lpVHdr, Len(VideoHeader)
    ReDim VideoData(VideoHeader.dwBytesUsed)
    RtlMoveMemory VarPtr(VideoData(0)), VideoHeader.lpData, VideoHeader.dwBytesUsed
    Debug.Print VideoHeader.dwBytesUsed
    Debug.Print VideoData
    End Function
    Function MyYieldCallback(lwnd As Long) As Long
    Debug.Print "Yield"
    End Function
    Function MyErrorCallback(ByVal lwnd As Long, ByVal iID As Long, ByVal ipstrStatusText As Long) As Long
    If iID = 0 Then Exit Function
    Dim sStatusText As String
    Dim usStatusText As String
    lStrCpy StrPtr(sStatusText), ipstrStatusText
    LogError usStatusText, iID
    End Function
    Function MyStatusCallback(ByVal lwnd As Long, ByVal iID As Long, ByVal ipstrStatusText As Long) As Long
    If iID = 0 Then Exit Function
    Dim sStatusText As String
    Dim usStatusText As String
    lStrCpy StrPtr(sStatusText), ipstrStatusText
    Debug.Print "Status: ", usStatusText, iID
    Select Case iID '
    End Select
    End Function
    Sub ResizeCaptureWindow(ByVal lwnd As Long)
    Dim CAPSTATUS As CAPSTATUS
    Dim lCaptionHeight As Long
    Dim lX_Border As Long
    Dim lY_Border As Long
    lCaptionHeight = GetSystemMetrics(SM_CYCAPTION)
    lX_Border = GetSystemMetrics(SM_CXFRAME)
    lY_Border = GetSystemMetrics(SM_CYFRAME)
    If capGetStatus(lwnd, VarPtr(CAPSTATUS), Len(CAPSTATUS)) Then
    SetWindowPos lwnd, HWND_BOTTOM, 0, 0, _
    CAPSTATUS.uiImageWidth + (lX_Border * 3), _
    CAPSTATUS.uiImageHeight + lCaptionHeight + (lY_Border * 3), _
    SWP_NOMOVE Or SWP_NOZORDER
    End If
    Debug.Print "Resize Window."
    End Sub
    Function MyVideoStreamCallback(lwnd As Long, lpVHdr As Long) As Long
    Beep
    End Function
    Function MyWaveStreamCallback(lwnd As Long, lpVHdr As Long) As Long
    Debug.Print "WaveStream"
    End Function
    Sub LogError(txtError As String, lID As Long)
    MsgBox "Se ha producido un error: " & txtError & "-> " & lID, vbCritical, "AVISO"
    End Sub



    e usei isso no formulario pra mostrar a imagem

    Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long
    Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function ReleaseCapture Lib "USER32" () As Long
    Private Const WM_CAP_DRIVER_CONNECT As Long = 1034
    Private Const WM_CAP_DRIVER_DISCONNECT As Long = 1035
    Private Const WM_CAP_GRAB_FRAME As Long = 1084
    Private Const WM_CAP_EDIT_COPY As Long = 1054
    Private Const WM_CAP_DLG_VIDEOFORMAT As Long = 1065
    Private Const WM_CAP_DLG_VIDEOSOURCE As Long = 1066
    Private Const WM_CLOSE = &H10
    Private mCapHwnd As Long
    Private Sub Form_Load()
    Dim lpszName As String * 100
    Dim lpszVer As String * 100
    Dim Caps As CAPDRIVERCAPS
    mCapHwnd = capCreateCaptureWindow("My Own Capture Window", 0, 0, 0, 320, 240, Me.hwnd, 0)
    SendMessage mCapHwnd, WM_CAP_DRIVER_CONNECT, 0, 0
    capGetDriverDescriptionA 0, lpszName, 50, lpszVer, 50
    lwndC = capCreateCaptureWindowA(lpszName, WS_CAPTION Or WS_THICKFRAME Or WS_VISIBLE Or WS_CHILD, 0, 0, 160, 120, Me.hwnd, 0)
    SetWindowText lwndC, lpszName
    capSetCallbackOnStatus lwndC, AddressOf MyStatusCallback
    capSetCallbackOnError lwndC, AddressOf MyErrorCallback
    If capDriverConnect(lwndC, 0) Then
    capDriverGetCaps lwndC, VarPtr(Caps), Len(Caps)
    capPreviewScale lwndC, True
    capPreviewRate lwndC, 33
    capPreview lwndC, True
    ResizeCaptureWindow lwndC
    End If
    If SendMessage(mCapHwnd, WM_CAP_DRIVER_CONNECT, 0, 0) = 0 Then
    MsgBox ("Não foi detectada nenhuma WebCam"), vbInformation, "Rio Corais"
    End If
    End Sub

    Private Sub Form_Close()
    ''Desliga a câmera
    SendMessage mCapHwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0
    DestroyWindow (mCapHwnd)
    End Sub
    avatar
    crb_sjrp
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 172
    Registrado : 21/03/2013

    capturar imagem de uma web cam Empty Re: capturar imagem de uma web cam

    Mensagem  crb_sjrp 15/10/2014, 16:44

    galera uma ajudinha por favor

    Conteúdo patrocinado


    capturar imagem de uma web cam Empty Re: capturar imagem de uma web cam

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 05:43