Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从网络摄像头将显示在VB6的PictureBox中的视频保存_Vb6_Video Capture_Picturebox - Fatal编程技术网

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

从网络摄像头将显示在VB6的PictureBox中的视频保存,vb6,video-capture,picturebox,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 =

我已经编写了一些代码,可以在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)

有什么想法吗?

您的
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)

有问题的一行。

事实上,实际的非托管语法要求您在0参数后指定文件名,即您的lParam和wParam混淆了。

现在我可以保存我的视频,但当视频录制开始时,我的光标变为忙碌状态,我无法以该形式执行其他操作。当我点击表格中的任意位置时,视频停止录制。有没有办法解决这个问题?