Сохранение видео, отображаемого в PictureBox в VB6, с веб-камеры - PullRequest
0 голосов
/ 15 июня 2011

Я написал некоторый код, который должен отображать видео, снятое с веб-камеры в 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 ]

1 голос
/ 24 февраля 2012

Ну, и тот факт, что фактический неуправляемый синтаксис требует, чтобы вы указали имя файла ПОСЛЕ параметра 0, т. Е. Вы перепутали lParam и wParam.

0 голосов
/ 17 июня 2011

Ваша декларация API для SendMessage несовместима со строкой для 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)

на линии обидчика.

...