Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/12/2009, 08:44
matiasdagatti
 
Fecha de Ingreso: noviembre-2007
Mensajes: 133
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Camaras instaladas en mi pc

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 original
  1. Global Const WM_USER = 1024
  2. Global Const wm_cap_driver_connect = WM_USER + 10
  3. Global Const wm_cap_set_preview = WM_USER + 50
  4. Global Const WM_CAP_EDIT_COPY = WM_USER + 30
  5. Global Const COPY = 1054
  6. Global Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
  7. Global Const WM_CAP_DRIVER_DISCONNECT = WM_USER + 11
  8. Global Const WM_CAP_DLG_VIDEOFORMAT = WM_USER + 41
  9. Global Const WM_CAP_DLG_VIDEOCONFIG = WM_USER + 42
  10. Global Const WM_CAP_SET_SCALE = WM_USER + 53
  11. 'Api de 16 bits
  12. 'Declare Function SendMessage Lib "User" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long
  13. 'Api para crear la ventana de captura
  14. '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
  15. 'Declare Function DestroyWindow Lib "User" (ByVal hndw As Integer) As Integer
  16. 'Api para crear la ventana de captura
  17. Public Declare Function capCreateCaptureWindow Lib "avicap32.dll" _
  18.     Alias "capCreateCaptureWindowA" ( _
  19.     ByVal lpszWindowName As String, _
  20.     ByVal dwStyle As Long, _
  21.     ByVal x As Long, _
  22.     ByVal y As Long, _
  23.     ByVal nWidth As Long, _
  24.     ByVal nHeight As Long, _
  25.     ByVal hwndParent As Long, _
  26.     ByVal nID As Long) As Long
  27.  
  28. Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
  29.     ByVal hwnd As Long, _
  30.     ByVal wMsg As Long, _
  31.     ByVal wParam As Long, _
  32.     lParam As Any) As Long
  33.  
  34. Public Declare Function DestroyWindow Lib "user32" (ByVal hndw As Long) As Boolean
  35. Public hwdc As Long
  36. Public startcap As Integer


y en el form para iniciar la cam tengo esto

Código vb:
Ver original
  1. Dim temp As Long
  2. Dim hWndc As Long
  3.  
  4.  
  5.  
  6.   hwdc = capCreateCaptureWindow("CapWindow", ws_child Or ws_visible, 0, 0, 340, 240, Picture1.hwnd, 0)
  7.  
  8.  
  9. 'esto conecta el dispositivo.
  10.  
  11.   If (hwdc <> 0) Then
  12.     temp = SendMessage(hwdc, wm_cap_driver_connect, 0, 0)
  13.     'esto hace que la imagen recibida por el dispositivo se ajuste
  14.    'al tamaño de la ventana de captura (justo lo que yo buscaba)
  15.   temp = SendMessage(hwdc, wm_cap_set_preview, 1, 0)
  16.    'esto setea la tasa de transferencia (vease MDSN)
  17.    temp = SendMessage(hwdc, WM_CAP_SET_PREVIEWRATE, 30, 0)
  18.     'esto activa el modo PREVIEW para ver video lo cual es suficiente
  19.    'para tener movimiento en mi programita
  20.    temp = SendMessage(Me.hwnd, WM_CAP_SET_SCALE, True, 0)
  21.     'esto hace que la imagen recibida por el dispositivo se ajuste
  22.    'al tamaño de la ventana de captura (justo lo que yo buscaba)
  23.    DoEvents
  24.     startcap = True
  25.     Picture1.Visible = True
  26.     boton.Caption = "Detener"
  27.     Else
  28.     MsgBox "No hay Camara Web", 48, "Error"
  29.   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