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 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 mCapHwnd As Long
Public Const CONNECT As Long = 1034
Public Const DISCONNECT As Long = 1035
Public Const GET_FRAME As Long = 1084
Public Const COPY As Long = 1054
Private Sub Form_Load()
On Error Resume Next
mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 320, 240, Me.hwnd, 0)
DoEvents: SendMessage mCapHwnd, CONNECT, 0, 0
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0
End Sub
Private Sub Timer1_Timer()
On Error Resume Next
SendMessage mCapHwnd, GET_FRAME, 0, 0
SendMessage mCapHwnd, COPY, 0, 0
Picture1.Picture = Clipboard.GetData
End Sub
Este Codigo es el que tengo pero ami me gustaria saber si hay laguna otra forma de capturar la webCam pero esa no me gusta. hay alguna forma de por ejemplo solo capturar una imagen de la cam.
;D Salu2, WarGhost
Citarhay alguna forma de por ejemplo solo capturar una imagen de la cam.
ese codigo es tuyo? pq se captura frame a frame.
no no ese código no es mio solo e modificado unas cosas ,pero quiero saber si hay alguna forma de simplemente capturar una imagen de la cam.
...
Private Sub Form_Load()
On Error Resume Next
mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 320, 240, Me.hwnd, 0)
SendMessage mCapHwnd, CONNECT, 0, 0
SendMessage mCapHwnd, GET_FRAME, 0, 0
SendMessage mCapHwnd, COPY, 0, 0
Picture1.Picture = Clipboard.GetData
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0
End Sub
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 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 mCapHwnd As Long
Public Const CONNECT As Long = 1034
Public Const DISCONNECT As Long = 1035
Public Const GET_FRAME As Long = 1084
Public Const COPY As Long = 1054
Private Sub cmdStart_Click()
cmdStart.Enabled = False
cmdStop.Enabled = True
'Setup a capture window (You can replace "WebcamCapture" with watever you want)
mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 320, 240, Me.hwnd, 0)
DoEvents: SendMessage mCapHwnd, CONNECT, 0, 0
tmrMain.Enabled = True
End Sub
Private Sub cmdStop_Click()
cmdStart.Enabled = True
cmdStop.Enabled = False
tmrMain.Enabled = False
DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If cmdStop.Enabled = False Then
'Se asegura de la conexion
DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0
End If
End Sub
Private Sub tmrMain_Timer()
On Error Resume Next
'Obtiene el frame actual
SendMessage mCapHwnd, GET_FRAME, 0, 0
'Copia el Frame
SendMessage mCapHwnd, COPY, 0, 0
'Pega los datos en el picture
picOutput.Picture = Clipboard.GetData
'Limpia clipboard
Clipboard.Clear
End Sub
timer:
name:tmrMAin
enabled=false
interval= 200
Este otro codigo a lo mejor te puede servir , este codigo no es mio lo obtuve de internet .
salu2
Muchas gracias ya tengo sulucionado el tema ;).
;D Salu2, WarGhost
No hace falta cambiar el codigo, simplemente cambia el timer por algun otro evento, como por ejemplo un CommandButton. El codigo lo q hace es sacar frames cada determinado tiempo (el intervalo del Timer)... Y no entiendo qué es lo q no te gusta, es muy simple :-\
Ya conseguí hacer lo que quería pero ahora no se como puedo hacer para saber si existe una cámara instalada y utilizable ¿?.
;) Gracias a todos.
Cuando vuelva te ayudo a listar los dispositivos de entrada de video y audio ;)
Todo funciona perfectamente, pero como hago para grabar la imagen con una resolución específica, por ejemplo 200 x 240, tipo carnet? y no se puede grabar tipo jpg?