Código
Option Explicit Private 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 Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long Private Declare Function DestroyWindow Lib "user32.dll" (ByVal hwnd As Long) As Long Private Const WM_CAP_START As Long = &H400 Private Const WM_CAP_DRIVER_DISCONNECT As Long = (WM_CAP_START + 11) Private Const WM_CAP_DRIVER_CONNECT As Long = (WM_CAP_START + 10) Private Sub Form_Load() Debug.Print IsWebCamPresent End Sub Private Function IsWebCamPresent() As Boolean Dim lRet As Long lRet = capCreateCaptureWindow(vbNullString, 0, 0, 0, 0, 0, 0, 0) If Not lRet = 0 Then If SendMessage(lRet, WM_CAP_DRIVER_CONNECT, ByVal 0&, ByVal 0&) Then Call SendMessage(lRet, WM_CAP_DRIVER_DISCONNECT, ByVal 0&, ByVal 0&) IsWebCamPresent = True End If Call DestroyWindow(lRet) End If End Function