Bueno me contesto solo, encontre algunos ejemplos y me incline por uno.
Usando la funcion capcreatecapturewindow
en un modulo tengo esto
Código Modulo bas:
Ver originalGlobal Const WM_USER = 1024
Global Const wm_cap_driver_connect = WM_USER + 10
Global Const wm_cap_set_preview = WM_USER + 50
Global Const WM_CAP_EDIT_COPY = WM_USER + 30
Global Const COPY = 1054
Global Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
Global Const WM_CAP_DRIVER_DISCONNECT = WM_USER + 11
Global Const WM_CAP_DLG_VIDEOFORMAT = WM_USER + 41
Global Const WM_CAP_DLG_VIDEOCONFIG = WM_USER + 42
Global Const WM_CAP_SET_SCALE = WM_USER + 53
'Api de 16 bits
'Declare Function SendMessage Lib "User" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long
'Api para crear la ventana de captura
'Declare Function capCreateCaptureWindow Lib "avicap.dll" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hwndParent As Integer, ByVal nID As Integer) As Long
'Declare Function DestroyWindow Lib "User" (ByVal hndw As Integer) As Integer
'Api para crear la ventana de captura
Public 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
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Public Declare Function DestroyWindow Lib "user32" (ByVal hndw As Long) As Boolean
Public hwdc As Long
Public startcap As Integer
y en el form para iniciar la cam tengo esto
Código vb:
Ver originalDim temp As Long
Dim hWndc As Long
hwdc = capCreateCaptureWindow("CapWindow", ws_child Or ws_visible, 0, 0, 340, 240, Picture1.hwnd, 0)
'esto conecta el dispositivo.
If (hwdc <> 0) Then
temp = SendMessage(hwdc, wm_cap_driver_connect, 0, 0)
'esto hace que la imagen recibida por el dispositivo se ajuste
'al tamaño de la ventana de captura (justo lo que yo buscaba)
temp = SendMessage(hwdc, wm_cap_set_preview, 1, 0)
'esto setea la tasa de transferencia (vease MDSN)
temp = SendMessage(hwdc, WM_CAP_SET_PREVIEWRATE, 30, 0)
'esto activa el modo PREVIEW para ver video lo cual es suficiente
'para tener movimiento en mi programita
temp = SendMessage(Me.hwnd, WM_CAP_SET_SCALE, True, 0)
'esto hace que la imagen recibida por el dispositivo se ajuste
'al tamaño de la ventana de captura (justo lo que yo buscaba)
DoEvents
startcap = True
Picture1.Visible = True
boton.Caption = "Detener"
Else
MsgBox "No hay Camara Web", 48, "Error"
End If
Funciona bien pero el problema es que la imagen que me muestra tiene mucho zoom y no se como manejarlo, ademas el foco de la cam apunta hacia el lugar que indico pero me imagen que me trae es de unos 10 cmts a la izquierda. Probé esto mismo con otra cam en otro pc pero pasa lo mismo.
Si alguien me dice como controlar eso seria buenísimo
Muchas gracias