VB6+API Win7 下摄像头不稳定,高手进

makenow 2010-07-16 01:26:20
在XP下运行完全正常。在Win7下,有时完全正常,有时启动程序会出现win7自带的设备选择提示。无论是点确定还是取消,均无法获取图像。请高手分析。


代码如下:

'============================================================================================
'声明部分
'============================================================================================
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 Long
Private 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 Long

Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long


Private Function CapturePicture(nCaptureHandle As Long) As StdPicture
Clipboard.Clear
SendMessage nCaptureHandle, WM_CAP_EDIT_COPY, 0, 0
Set CapturePicture = Clipboard.GetData
End Function


'============================================================================================
'程序加载时将摄像头内容传送到Picture1上。 640 480代表分辨率
'============================================================================================

Private Sub Form_Load()
Preview_Handle = capCreateCaptureWindow("Video", WS_CHILD + WS_VISIBLE, 0, 0, 640, 480, Picture1.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 Sub

Private Sub Form_Unload(Cancel As Integer)
SendMessage Preview_Handle, WM_CAP_DRIVER_DISCONNECT, 0, 0
End Sub
...全文
1084 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bciAnson 2013-01-07
  • 打赏
  • 举报
回复
Private Sub Form_Load() Preview_Handle = capCreateCaptureWindow("Video", WS_CHILD + WS_VISIBLE, 0, 0, 640, 480, Picture1.hwnd, 1) '***改这里 开始 dim i as integer dim iret as boolean for i=1 to 10 iret=SendMessage Preview_Handle, WM_CAP_DRIVER_CONNECT, 0, 0 if iret then exit for next i '*****修改结束 SendMessage Preview_Handle, WM_CAP_SET_PREVIEWRATE, 1, 0 SendMessage Preview_Handle, WM_CAP_SET_PREVIEW, 1, 0 End Sub Private Sub Form_Unload(Cancel As Integer) SendMessage Preview_Handle, WM_CAP_DRIVER_DISCONNECT, 0, 0 End Sub '*********这个据说是兼容性的问题,这个方便是可以用的,但不理想,因为会弹出对话框,用户体验不好
shensan23 2011-04-01
  • 打赏
  • 举报
回复
这个确实有这个问题,经常连接不上
hegun 2011-01-27
  • 打赏
  • 举报
回复
我也有同样的问题啊
crabysk 2010-10-23
  • 打赏
  • 举报
回复
我来看看
makenow 2010-07-18
  • 打赏
  • 举报
回复
没办法了。兼容问题。改语言。结贴。
孤独剑_LPZ 2010-07-16
  • 打赏
  • 举报
回复
在Win7下是否能设置用兼容模式(兼容win XP)运行,没用过Win7,lz试试看
ffdemon 2010-07-16
  • 打赏
  • 举报
回复
顶上去!!
makenow 2010-07-16
  • 打赏
  • 举报
回复
唉!!!自己感觉是捕获摄像头硬件的问题。但是明明就一个摄像头。郁闷。
jhone99 2010-07-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 makenow 的回复:]
没人回复??
[/Quote]
用win7的人少
makenow 2010-07-16
  • 打赏
  • 举报
回复
没人回复??

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧