Connecting Tech Pros Worldwide Forums | Help | Site Map

Capture video from webcam and displays in picture box

debasisdas's Avatar
Moderator
 
Join Date: Dec 2006
Location: Bangalore ,India
Posts: 7,569
#1   Oct 9 '07
This program checks if webcam is available, if available then capture video and displays in picture box.

Add this code to the general module (.BAS file)
----------------------------------------------------------------------
Expand|Select|Wrap|Line Numbers
  1. Public Const ws_child As Long = &H40000000
  2. Public Const ws_visible As Long = &H10000000
  3.  
  4. Global Const WM_USER = 1024
  5. Global Const wm_cap_driver_connect = WM_USER + 10
  6. Global Const wm_cap_set_preview = WM_USER + 50
  7. Global Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
  8. Global Const WM_CAP_DRIVER_DISCONNECT As Long = WM_USER + 11
  9. Public Const WM_CAP_DLG_VIDEOFORMAT As Long = WM_USER + 41
  10. Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  11. Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal a As String, ByVal b As Long, ByVal c As Integer, ByVal d As Integer, ByVal e As Integer, ByVal f As Integer, ByVal g As Long, ByVal h As Integer) As Long
Add 4 command buttons and a picture box to the form
Add the following code to click en\vent of the respective buttons.

Expand|Select|Wrap|Line Numbers
  1. 'General Declaration
  2. Dim hwdc As Long
  3. Dim startcap As Boolean
  4.  
  5. Private Sub cmdCapture_Click()
  6. Dim temp As Long
  7.  
  8.   hwdc = capCreateCaptureWindow("Debasis Das", ws_child Or ws_visible, 0, 0, 320, 240, Picture1.hWnd, 0)
  9.   If (hwdc <> 0) Then
  10.     temp = SendMessage(hwdc, wm_cap_driver_connect, 0, 0)
  11.     temp = SendMessage(hwdc, wm_cap_set_preview, 1, 0)
  12.     temp = SendMessage(hwdc, WM_CAP_SET_PREVIEWRATE, 30, 0)
  13.     startcap = True
  14.     Else
  15.     MsgBox ("No Webcam found")
  16.   End If
  17. End Sub
  18.  
  19. Private Sub cmdClose_Click()
  20. Dim temp As Long
  21. If startcap = True Then
  22. temp = SendMessage(hwdc, WM_CAP_DRIVER_DISCONNECT, 0&, 0&)
  23. startcap = False
  24. End If
  25. End Sub
  26.  
  27. Private Sub cmdexit_Click()
  28. Unload Me
  29. End Sub
  30.  
  31. Private Sub cmdVideoFormat_Click()
  32.  Dim temp As Long
  33.  If startcap = True Then
  34.   temp = SendMessage(hwdc, WM_CAP_DLG_VIDEOFORMAT, 0&, 0&)
  35. End If
  36. End Sub
  37.  
To achieve this two API function are used.

1.capCreateCaptureWindow
2.SendMessage

Please find the details of the functions for more info .



Reply