自己这几天打算用vb做个云台控制软件,想在软件里面通过一个picture控件显示摄像头拍摄到的画面,摄像头就是平常用的那种免驱的usb接口的摄像头,虽然网上这方面的东西很多,但是picture里面得到的画面都是黑,没有图像,该怎么弄呢。Dim Video_Handle As LongPrivate Sub Command2_Click()
    Video_Handle = CreateCaptureWindow(PicCapture.hwnd)
End SubPrivate Sub Command1_Click()
    Dim x As StdPicture
    Set x = CapturePicture(Video_Handle)
    SavePicture x, "c:\a.bmp"
End SubPrivate Sub Command3_Click()
    Disconnect Video_Handle
End SubPrivate Sub Form_Unload(Cancel As Integer)
    Disconnect Video_Handle
End Sub这是网上找到的一段程序,运行以后画面只是黑的。

解决方案 »

  1.   

    picture里面得到的画面都是黑,应该把把如何在picture里面得到的画面代码贴一下
    另外该问问厂家有没有vb开发的demo
      

  2.   

    http://download.csdn.net/source/2979383
      

  3.   

    声明这个API    CreateCaptureWindow(
      

  4.   

    用控件 ezVidC60.ocx ezVidCap.ocx 以前用过。
      

  5.   

    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 LongPrivate Const WS_CHILD = &H40000000
    Private Const WS_VISIBLE = &H10000000
    Private Const WM_USER = &H400
    Private Const WM_CAP_START = &H400
    Private Const WM_CAP_EDIT_COPY = (WM_CAP_START + 30)
    Private Const WM_CAP_DRIVER_CONNECT = (WM_CAP_START + 10)
    Private Const WM_CAP_SET_PREVIEWRATE = (WM_CAP_START + 52)
    Private Const WM_CAP_SET_OVERLAY = (WM_CAP_START + 51)
    Private Const WM_CAP_SET_PREVIEW = (WM_CAP_START + 50)
    Private Const WM_CAP_DRIVER_DISCONNECT = (WM_CAP_START + 11)Private Preview_Handle As LongPrivate Declare Function SendMessage Lib "user32" _
    Alias "SendMessageA" ( _
    ByVal hwnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    lParam As Any) As LongPrivate Function CapturePicture(nCaptureHandle As Long) As StdPicture
    Clipboard.Clear
    SendMessage nCaptureHandle, WM_CAP_EDIT_COPY, 0, 0
    Set CapturePicture = Clipboard.GetData
    End FunctionPrivate Sub Command1_Click()
    SavePicture Picture1.Picture, "c:\a.bmp"
    End SubPrivate Sub Command2_Click()
    Picture1.Picture = CapturePicture(Preview_Handle)
    End SubPrivate Sub Form_Load()
    Preview_Handle = capCreateCaptureWindow("Video", WS_CHILD + WS_VISIBLE, 2, 2, 220, 156, Me.hwnd, 1)
    SendMessage Preview_Handle, WM_CAP_DRIVER_CONNECT, 0, 0
    SendMessage Preview_Handle, WM_CAP_SET_PREVIEWRATE, 1, 0
    SendMessage Preview_Handle, WM_CAP_SET_PREVIEW, 1, 0
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    SendMessage Preview_Handle, WM_CAP_DRIVER_DISCONNECT, 0, 0
    End Sub