标题:想测试下vfp9调用AVICAP32.DLL拍照
只看楼主
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
结帖率:76.47%
已结贴  问题点数:20 回复次数:4 
想测试下vfp9调用AVICAP32.DLL拍照
想测试下vfp9调用AVICAP32.DLL拍照,哪位有现成的测试代码?谢谢!

https://blog. 这个例子测试黑屏!

早两年有测试过,可行,不知何故现在测试是黑屏的,没有图像!之前的测试代码不知放哪里了……

[此贴子已经被作者于2021-2-19 16:13编辑过]

搜索更多相关主题的帖子: DLL 调用 AVICAP32 测试 vfp9 
2021-02-19 16:10
大树临风
Rank: 2
等 级:论坛游民
帖 子:128
专家分:14
注 册:2015-12-9
得分:14 
以下测试可用
*--以下定义摄像头扩展应用:一般放到主程序或表单(集)的Load事件中
Public WM_CAP_DRIVER_DISCONNECT
Public hwndc,WM_CAP_SAVEDIB,WM_CAP_FILE_SET_CAPTURE_FILEA,WM_CAP_SEQUENCE,WM_CAP_STOP
Declare Integer capCreateCaptureWindowA In "AVICAP32.DLL" String lpszWindowName ,Integer dwStyle ,;
    Integer x, Integer Y, Integer nWidth ,Integer nHeight,Integer ParentWin,Integer nId
Declare Integer SendMessage In "user32" Integer HWnd, Integer wmsg,Integer wpar1, Integer wpar2
Declare Integer SendMessage In "user32" As SendMessageA Integer HWnd, Integer wmsg,Integer wpar1,String wpar2
hwndc=0
*--定以上义摄像头扩展应用:一般放到主程序或表单(集)的Load事件中

*--显示:可以放到按钮或表单(集)的Init事件中,!!!
WM_USER = 1024
WM_CAP_START = WM_USER
WM_CAP_STOP = WM_CAP_START + 68
WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10
WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11

WM_CAP_SAVEDIB = WM_CAP_START + 25
WM_CAP_GRAB_FRAME = WM_CAP_START + 60
WM_CAP_SEQUENCE = WM_CAP_START + 62
WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20
WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+ 63
WM_CAP_SET_OVERLAY =WM_CAP_START+ 51
WM_CAP_SET_PREVIEW =WM_CAP_START+ 50
WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START +6
WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START +2
WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START +3
WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START +5
WM_CAP_SET_SCALE=WM_CAP_START+ 53
WM_CAP_SET_PREVIEWRATE=WM_CAP_START+ 52

WM_CAP_SET_MCI_DEVICE=WM_CAP_START+ 66         &&//设置媒体控制接口
WM_CAP_DLG_VIDEOSOURCE =WM_CAP_START+ 42    &&1066 打开属性设置对话框,设置对比度、亮度等。(视频源对话框) 选择视频输入通道和视频图像的动态参数。

*第3、4个参数是定义显示位置,第5、6个参数是定义显示大小。
hWndC = capCreateCaptureWindowA('My Own Capture Window',1342177280,100,100,320,240,Thisform.HWnd ,0)

If hWndC<>0
     
    SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0)    &&设置回调视频流
    SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0)        &&设置回调错误
    SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0)    &&设置回调状态,原始值为:0,0
   
    SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0)        &&驱动程序连接
    SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0)        &&驱动程序连接
   
    SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0)            &&设置预览视频的缩放比例
    SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0)    &&设置预览模式下图像的帧速度
    SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0)    &&设置覆盖
    SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0)    &&设置预览模式
    SendMessage(hWndC, WM_CAP_SET_MCI_DEVICE, 1, 0)    &&设置媒体控制接口
      
ENDIF

*--关闭显示:
IF hWndC<>0
    SendMessage(hWndC,WM_CAP_DRIVER_DISCONNECT, 0, 0)
    hWndC=0   
ENDIF
2021-02-20 10:31
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
回复 2楼 大树临风


一样黑屏!
2021-02-20 13:07
大树临风
Rank: 2
等 级:论坛游民
帖 子:128
专家分:14
注 册:2015-12-9
得分:0 
在原来的平板电脑曾经测试成功过,不过好像有点问题,下面这两行代码是两个相同的,我记得当时就是必须要执行两次才行,可能是有两个摄像头的原因吧
    SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0)        &&驱动程序连接
    SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0)        &&驱动程序连接
2021-02-20 15:21
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用大树临风在2021-2-20 15:21:45的发言:

在原来的平板电脑曾经测试成功过,不过好像有点问题,下面这两行代码是两个相同的,我记得当时就是必须要执行两次才行,可能是有两个摄像头的原因吧
    SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0)        &&驱动程序连接
    SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0)        &&驱动程序连接


嗯,以前我也测试过是可以的,但是目前测试不行,不知何故!
2021-02-20 15:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504906-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.866256 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved