Dim capHwnd As LongPrivate Sub Command1_Click()
Dim lRet As Long
Picture1.AutoRedraw = True
capHwnd = capCreateCaptureWindowA("", ws_visible Or ws_child, 0, 0, 320, 240, Picture1.hWnd, 0)
lRet = SendMessage(capHwnd, WM_CAP_DRIVER_CONNECT, 0, 0)
SendMessage capHwnd, WM_CAP_SET_SCALE, True, 0
SendMessage capHwnd, WM_CAP_SET_PREVIEWRATE, 30, 0
'SendMessage capHwnd, WM_CAP_SET_PREVIEW, True, 0
lRet = SendMessage(capHwnd, WM_CAP_DRIVER_CONNECT, 0, 0)
End Sub在用以上代码捕获摄像头时遇到了两个问题:
1、如果有别的程序在使用摄像头,执行到SendMessage capHwnd, WM_CAP_DRIVER_CONNECT, 0, 0时会弹出选择设备的窗口,如何事先检测摄像头是否正在使用而避免弹出该窗口?
2、有时候捕获到的是黑屏,应该如何解决?
Dim lRet As Long
Picture1.AutoRedraw = True
capHwnd = capCreateCaptureWindowA("", ws_visible Or ws_child, 0, 0, 320, 240, Picture1.hWnd, 0)
lRet = SendMessage(capHwnd, WM_CAP_DRIVER_CONNECT, 0, 0)
SendMessage capHwnd, WM_CAP_SET_SCALE, True, 0
SendMessage capHwnd, WM_CAP_SET_PREVIEWRATE, 30, 0
'SendMessage capHwnd, WM_CAP_SET_PREVIEW, True, 0
lRet = SendMessage(capHwnd, WM_CAP_DRIVER_CONNECT, 0, 0)
End Sub在用以上代码捕获摄像头时遇到了两个问题:
1、如果有别的程序在使用摄像头,执行到SendMessage capHwnd, WM_CAP_DRIVER_CONNECT, 0, 0时会弹出选择设备的窗口,如何事先检测摄像头是否正在使用而避免弹出该窗口?
2、有时候捕获到的是黑屏,应该如何解决?
解决方案 »
- 网页的这个“撰写文件”怎么点击呢?请教请教
- 执行sql语句的问题!!!!!!!!急!!!!!
- 高手快来啊!声明一个可选的数值型数组参数时编译出错?在线等...
- 求小数位四舍五入的函数!!!????????!!!!!!!!!!!
- 誰知道這個問題??? 重分懸賞﹗﹗﹗
- 怎么控制打印?
- fso需要引用什么? 我无MSDN光盘,只好求高手指点
- 请教大家,怎么取得系统当前登录的用户名啊,给出代码好吗!!急!!能通过注册表读出来么??
- 急,VB里调用OUTLOOK发Email, 请问如何设置发件人的信息(name, emailaddress)?
- ★听说VB对Win2000的注册表进行读写有一定的问题,请问哪位高手有圆满的解决方案,请拿出来共享。我给分!★
- 有关一个亮度的问题
- 高分求 用网卡加密的 代码或思路
2。黑屏说明没有捕捉到数据,是不是设备连接问题?
capDriverGetCaps是一个宏,它是这样的:
SendMessage(lwnd, WM_CAP_DRIVER_GET_CAPS, wSize, s)
看看你的代码怎么有两行lRet = SendMessage(capHwnd, WM_CAP_DRIVER_CONNECT, 0, 0)
呀!!把后面那行删除,因为前面已连接了一次,后面再连肯定出错!检测一下lRet是否为true
Picture1.AutoRedraw = True
capHwnd = capCreateCaptureWindowA("", ws_visible Or ws_child, 0, 0, 320, 240, Picture1.hWnd, 0)
lRet = SendMessage(capHwnd, WM_CAP_DRIVER_CONNECT, 0, 0)
if lRet then
SendMessage capHwnd, WM_CAP_SET_SCALE, True, 0
SendMessage capHwnd, WM_CAP_SET_PREVIEWRATE, 30, 0
SendMessage capHwnd, WM_CAP_SET_PREVIEW, True, 0
else
msgbox "没有安装摄像头或正在使用!"
end if
这么说要避免弹出这个窗口,就只好不使用SendMessage(capHwnd, WM_CAP_DRIVER_CONNECT, 0, 0)了?
实在找不到其他函数可以判断摄像头正在使用了~~~试试SendMessage(lwnd, WM_CAP_SET_CALLBACK_FRAME, 0, lpProc) lpProc是回调函数地址
当SendMessage(capHwnd, WM_CAP_DRIVER_CONNECT, 0, 0)发生错误时应该先调用这个回调函数吧