By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
429,384 Members | 714 Online
Bytes IT Community
Submit an Article
Got Smarts?
Share your bits of IT knowledge by writing an article on Bytes.

Capture video from webcam and displays in picture box

debasisdas
Expert 5K+
P: 8,127
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 .
Oct 9 '07 #1
Share this Article
Share on Google+
2 Comments


P: 1
I tried your Video Capture API/Program and it worked great...sort of. The first time I ran the code it worked fine. I exited the program and restarted it. Now I get nothing but a black picturebox and none of the other buttons work (except the EXIT Button). I am using VB 6 with Windows 7 (64). I'm lost. What is the problem? I only have one webcam attached to the computer.

If I restart my computer, this code works great the first time. Seems like something is not being reset when I exit the capture.

One other note..When I try to excute the code the second time (without a computer reboot) a "Video Source" box appears. Since I only have one webcam attached there is only one choice available. I press the "OK" button and the get the problem stated above.

Thanks,

Charles
Jul 22 '10 #2

tuxalot
100+
P: 200
Can this be modified to work in Access with VBA?
Dec 31 '11 #3