Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: WarGhost en 20 Julio 2006, 22:56 pm



Título: Capturar Cam de otra forma.
Publicado por: WarGhost en 20 Julio 2006, 22:56 pm
Código:
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

Código:
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


Título: Re: Capturar Cam de otra forma.
Publicado por: byebye en 20 Julio 2006, 23:24 pm
Citar
hay alguna forma de por ejemplo solo capturar una imagen de la cam.

ese codigo es tuyo? pq se captura frame a frame.


Título: Re: Capturar Cam de otra forma.
Publicado por: WarGhost en 20 Julio 2006, 23:27 pm
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.


Título: Re: Capturar Cam de otra forma.
Publicado por: Kizar en 21 Julio 2006, 00:01 am
...

Código:
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


Título: Re: Capturar Cam de otra forma.
Publicado por: Robokop en 21 Julio 2006, 00:15 am
Código:
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

Código:
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


Título: Re: Capturar Cam de otra forma.
Publicado por: WarGhost en 21 Julio 2006, 00:52 am
Muchas gracias ya tengo sulucionado el tema ;).

;D Salu2, WarGhost


Título: Re: Capturar Cam de otra forma.
Publicado por: NYlOn en 21 Julio 2006, 08:14 am
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  :-\


Título: Re: Capturar Cam de otra forma.
Publicado por: WarGhost en 21 Julio 2006, 16:52 pm
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.


Título: Re: Capturar Cam de otra forma.
Publicado por: Kizar en 21 Julio 2006, 17:11 pm
Cuando vuelva te ayudo a listar los dispositivos de entrada de video y audio ;)


Título: Re: Capturar Cam de otra forma.
Publicado por: alfredogarc en 1 Agosto 2006, 22:33 pm
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?