从网络摄像头保存VB6中PictureBox中显示的视频

时间:2011-06-15 16:30:59

标签: vb6 video-capture picturebox

我编写了一些代码,可以显示从PictureBox中的网络摄像头捕获的视频。我想以.avi格式录制和保存显示的视频。有没有办法这样做?

我尝试录制视频的代码是:

Dim hWnd As Long

hWnd = capCreateCaptureWindow(0, ws_visible Or ws_child, 0, 0, 0, 0, tgt.hWnd, 0)
Dim a As Boolean
a = SendMessage(hWnd, wm_cap_driver_connect, 0, 0)
a = SendMessage(hWnd, WM_CAP_SET_SCALE, True, 0)
a = SendMessage(hWnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0)
a = SendMessage(hWnd, WM_CAP_FILE_SET_CAPTURE_FILE, "d:\myvideo1.avi", 0)
a = SendMessage(hWnd, WM_CAP_SET_SEQUENCE_SETUP, 96, 0)
a = SendMessage(hWnd, WM_CAP_SEQUENCE, 0, 0)

但是,它为以下行提供了“类型不匹配”错误:

a = SendMessage(hWnd, WM_CAP_FILE_SET_CAPTURE_FILE, "d:\myvideo1.avi", 0)

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

那么,事实上,实际的非托管语法要求你在0参数之后指定文件名,即你有lParam和wParam的混合。

答案 1 :(得分:0)

SendMessage的API声明与wParam的字符串不兼容。你必须制作另一个API声明,可以用wParam这样的字符串调用

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 SendMessageStr Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As String, lParam As Any) As Long

然后使用

a = SendMessageStr(hWnd, WM_CAP_FILE_SET_CAPTURE_FILE, "d:\myvideo1.avi", 0)

在违规行上。

相关问题