Claro que si mira

tengo un ejemplos que podria ayudarte. te guiare.
LO QUE NECESITAS PRIMERO ES GENERAR UN MODULO Y PONERLE EXACTAMENTE LO SIGUIENTE.
AGREGAR MODULO AL PROYECRO.
LE PONEMOS DE NOMBRE CAMARA
Module camara
Public Const WM_CAP As Short = &H400S
Public Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_CAP + 11
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Short, ByVal lParam As Integer) As Integer
Declare Function capCreateCaptureWindowA Lib "avicap32.dll" (ByVal lpszWindowName As String, ByVal dwStyle As Integer, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Short, ByVal hWndParent As Integer, ByVal nID As Integer) As Integer
Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As Short, ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, ByVal cbVer As Integer) As Boolean
Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hWnd As Integer, ByVal lpString As String) As Integer
''para destruir la captura en tiempo de ejecucion
Declare Function DestroyWindow Lib "user32" (ByVal hndw As Integer) As Boolean
Public lwndC As Integer
Public iDevice As Integer = 0 ' Dispositivo Actial ID
Public Const WM_USER As Short = &H400S
Public Const WS_CHILD As Integer = &H40000000
Public Const WS_VISIBLE As Integer = &H10000000
Public Const WS_THICKFRAME As Integer = &H40000
Public Const WM_CAP_START As Short = WM_USER
Public Const WM_CAP_SET_CALLBACK_ERROR As Integer = WM_CAP_START + 2
Public Const WM_CAP_SET_CALLBACK_STATUS As Integer = WM_CAP_START + 3
Public Const WM_CAP_SET_CALLBACK_YIELD As Integer = WM_CAP_START + 4
Public Const WM_CAP_SET_CALLBACK_FRAME As Integer = WM_CAP_START + 5
Public Const WM_CAP_SET_CALLBACK_VIDEOSTREAM As Integer = WM_CAP_START + 6
Public Const WM_CAP_SET_CALLBACK_WAVESTREAM As Integer = WM_CAP_START + 7
Public Const WM_CAP_DRIVER_CONNECT As Integer = WM_CAP_START + 10
Public Const WM_CAP_EDIT_COPY As Integer = WM_CAP_START + 30
Public Const WM_CAP_DLG_VIDEOSOURCE As Integer = WM_CAP_START + 42
Public Const WM_CAP_SET_PREVIEW As Integer = WM_CAP_START + 50
Public Const WM_CAP_SET_PREVIEWRATE As Integer = WM_CAP_START + 52
Public Const WM_CAP_SET_SCALE As Integer = WM_CAP_START + 53
Public Const WM_CAP_SET_CALLBACK_CAPCONTROL As Integer = WM_CAP_START + 85
Public Const WM_CAP_END As Short = WM_CAP_SET_CALLBACK_CAPCONTROL
Function capSetCallbackOnError(ByVal lwnd As Integer, ByVal lpProc As Integer) As Boolean
capSetCallbackOnError = SendMessage(lwnd, WM_CAP_SET_CALLBACK_ERROR, 0, lpProc)
End Function
Function capSetCallbackOnStatus(ByVal lwnd As Integer, ByVal lpProc As Integer) As Boolean
capSetCallbackOnStatus = SendMessage(lwnd, WM_CAP_SET_CALLBACK_STATUS, 0, lpProc)
End Function
Function capSetCallbackOnYield(ByVal lwnd As Integer, ByVal lpProc As Integer) As Boolean
capSetCallbackOnYield = SendMessage(lwnd, WM_CAP_SET_CALLBACK_YIELD, 0, lpProc)
End Function
Function capSetCallbackOnFrame(ByVal lwnd As Integer, ByVal lpProc As Integer) As Boolean
capSetCallbackOnFrame = SendMessage(lwnd, WM_CAP_SET_CALLBACK_FRAME, 0, lpProc)
End Function
Function capSetCallbackOnVideoStream(ByVal lwnd As Integer, ByVal lpProc As Integer) As Boolean
capSetCallbackOnVideoStream = SendMessage(lwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, lpProc)
End Function
Function capSetCallbackOnWaveStream(ByVal lwnd As Integer, ByVal lpProc As Integer) As Boolean
capSetCallbackOnWaveStream = SendMessage(lwnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, lpProc)
End Function
Function capSetCallbackOnCapControl(ByVal lwnd As Integer, ByVal lpProc As Integer) As Boolean
capSetCallbackOnCapControl = SendMessage(lwnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, lpProc)
End Function
Function capDriverConnect(ByVal lwnd As Integer, ByVal i As Short) As Boolean
capDriverConnect = SendMessage(lwnd, WM_CAP_DRIVER_CONNECT, i, 0)
End Function
Function capEditCopy(ByVal lwnd As Integer) As Boolean
capEditCopy = SendMessage(lwnd, WM_CAP_EDIT_COPY, 0, 0)
End Function
Function capDlgVideoSource(ByVal lwnd As Integer) As Boolean
capDlgVideoSource = SendMessage(lwnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0)
End Function
Function capPreview(ByVal lwnd As Integer, ByVal f As Boolean) As Boolean
capPreview = SendMessage(lwnd, WM_CAP_SET_PREVIEW, f, 0)
End Function
Function capPreviewRate(ByVal lwnd As Integer, ByVal wMS As Short) As Boolean
capPreviewRate = SendMessage(lwnd, WM_CAP_SET_PREVIEWRATE, wMS, 0)
End Function
Function capPreviewScale(ByVal lwnd As Integer, ByVal f As Boolean) As Boolean
capPreviewScale = SendMessage(lwnd, WM_CAP_SET_SCALE, f, 0)
End Function
End Module
COMO PODRAS DARTE CUENTA AHI ESTA LO QUE NECESITAMOS PARA QUE LA CAMARA WEB FUNCIONE, POR LO MENOS EN CUANTO A QUE SE GENERE PARCIALMENTE OK PROSEGUIMOS...
YA EN EL CODIGO DE LA FORMA DONDE VAYAS USAR LA CAMARA WEB DEBES DE IMPORTAR ESTAS LIBRERIAS
Imports System.IO
Imports PROYECTO.camara ''ESTO ES PARA EL MODULO DONDE PROYECTO ES EL NOMBRE DE TU PROYECTO
''Libreria gregada para resolver la compatibilidad de las variables VB6.0
Imports Microsoft.VisualBasic.Compatibility
''ESTA LIBRERIA ES MUY IMPORTANTE PORQUE NECESITAMOS CIERTA COMPATIBILIDAD CON VB.6.0 EN PROYECTO LE DAS AGREGAR REFERENCIA Y BUSCAS EN LA PESTAÑA QUE TE SALE POR DEFECTO, SINO ESTA AHI LA BUSCAS EN COM...
AHORA EN LA SECCION DE VARIABLES GLOBALES DEBES INCLUIR EL SIGUIENTE CODIGO.
''codigo anexado para activacion de la camara
Inherits System.Windows.Forms.Form
DESPUES DE ELLO VAMOS AL CODIGO DE UN BOTON QUE YO DENOMINE PLAY
''Seccion para activar la camara
Private Sub BtnPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPlay.Click
''Es necesario agregar referencias de compatibilidad y una libreria para que las
''variables de VB6 funcionen
Dim lpszName As New VB6.FixedLengthString(100)
Dim lpszVer As New VB6.FixedLengthString(100)
capGetDriverDescriptionA(0, lpszName.Value, 100, lpszVer.Value, 100)
'con el codigo de abajo se genera la pantalla de captura y puedes controlar su tamaño y posicion
lwndC = capCreateCaptureWindowA(lpszName.Value, WS_VISIBLE Or WS_CHILD, 584, 70, 215, 144, Me.Handle.ToInt32, 0)
If capDriverConnect(lwndC, 0) Then
capPreviewScale(lwndC, True)
capPreviewRate(lwndC, 50)
capPreview(lwndC, True)
End If
BtnDet.Enabled = True ''ESTE BOTON DETIENE LA CAPTURA
BtnCap.Enabled = True ''ESTE BOTON TOMA UNA FOTO SI ES QUE QUIERES TOMARLA CLARO LO EXPLICARE MAS ADELANTE
End Sub
BIEN AHORA VAMOS A DETENER LA CAMARA PARA FINALIZAR LA SESION A ESTE BOTONO LO DENOMINE DETENER
Private Sub BtnDet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDet.Click
''Codigo para destruir la ventana creada en tiempo de ejecucion
SendMessage(lwndC, WM_CAP_DRIVER_DISCONNECT, iDevice, 0)
DestroyWindow(lwndC)
PBfoto.Image = Nothing
BtnCap.Enabled = False
BtnDet.Enabled = False
End Sub
HASTA AQUI TODO BIEN, BUENO ENTONCES SI LO QUE QUIERES ES CAPTURAR UNA FOTO SOLO COLOCA EL SIGUIENTE CDIGO EN UN BOTON PARA QUE LA IMAGEN SE CAPTURE EN UN PICTUREBOX
Dim data As IDataObject
Dim bmap As Bitmap
capEditCopy(lwndC) ' Llama a copiar la imagen al portapapeles
data = Clipboard.GetDataObject() ' Obtiene la imagen del portapapeles
bmap = CType(data.GetData(GetType(System.Drawing.Bitmap)), Bitmap) ' Lo comvierte a bmp
PICTUREBOX1.Image = bmap
End Sub
Bueno amigo Bakuno creo que esto te puede ayudar, no es la gran cosa, juega con las variables es la mejor forma de aprender a programar ademas de que puedes hacer interrupciones de codigo con F9 y asi ver exactamente que RAYOS hace el programa JAJAJA, saludos cualquier cosas me avisas
Alugas recomendaciones finales, debes tener cuidado cuando manejas tus dispositivos, no todo responden de la misma manera, esto me funciono a mi espero que a ti tambien, espero que pronto puedas tener exito en tus programas SALUDOS!!!!







