VFW视频采集,被遮罩或最小化时无法传输图象,100分送上,请各位帮个忙!

dnahonker 2008-10-06 04:47:04
用VFW做视频采集时,当将程序最小化或者当前焦点不是程序上时那么程序就无法工作了,请问这是怎么回事?
我在网上找了一天答案,说是将CapSetCallbackOnFrame(CapWnd,FrameCallBack);替换为capSetCallbackOnVideoStream(CapWnd,FrameCallBack);

可是我替换后capSetCallbackOnVideoStream(CapWnd,FrameCallBack);根本不工作,就是说进入不到回调的那个函数里面。
CapCaptureSequenceNoFile(CapWnd);也写了
大致的代码如下:


procedure TForm1.Button1Click(Sender: TObject);
begin
CapWnd := capCreateCaptureWindow('viewwindow', WS_VISIBLE or WS_CHILD,
0, //X坐标
0, //Y坐标
panel1.Width, //窗口宽
panel1.Height, //窗口高
panel1.handle, //窗口句柄
0); //通常为0

if CapWnd = 0 then exit;
CapSetCallbackOnFrame(CapWnd,FrameCallBack);<--
这里替换为:
//--------------------

CapCaptureSequenceNoFile(capWnd);
capSetCallbackOnVideoStream(CapWnd,FrameCallBack);<--这个函数执行了,可是不执行“FrameCallBack”
//--------------------

CapParms.dwRequestMicroSecPerFrame:=1;
CapParms.fLimitEnabled:=FALSE;
CapParms.fCaptureAudio:=FALSE;
CapParms.fMCIControl:=FALSE;
CapParms.fYield:=TRUE;
CapParms.vKeyAbort:=VK_ESCAPE;
CapParms.fAbortLeftMouse:=False;
CapParms.fAbortRightMouse:=FALSE;
CapCaptureSetSetup(capWnd,@CapParms,sizeof(TCAPTUREPARMS));
CapPreviewRate(capWnd,33);
CapCaptureSequenceNoFile(capWnd);
CapDriverConnect(CapWnd,0);
capGetVideoFormat(capWnd, @BMPINFO,sizeof(TBitmapInfo));
CapPreviewScale(capWnd,TRUE);
CapOverlay(capWnd,true);
CapPreview(capWnd,true);
CapCaptureSequenceNoFile(CapWnd);

end;



请各位帮帮忙,看看是怎么回事,该如何更改才能使程序能够最小化或者在后台也能够运行?
...全文
108 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunokboy 2010-05-08
  • 打赏
  • 举报
回复
我用VB6.0也在开发同样的一个程序,也不执行,我K。BUG~!
lovesend1983 2008-11-25
  • 打赏
  • 举报
回复
刚遇到 不知道怎么解决
回调函数根本不执行
yuqianyi1974 2008-10-08
  • 打赏
  • 举报
回复
告诉邮箱我给你一份
dnahonker 2008-10-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yuqianyi1974 的回复:]
我用的控件叫videocap23,你下载一个,代替你写的代码
[/Quote]

除了这个方法没别的了吗?
这个问题一直没有得到过有效的解决
videocap23怎么使用的?
yeah920 2008-10-07
  • 打赏
  • 举报
回复
帮忙顶一下,让了解的人来解答.
yuqianyi1974 2008-10-07
  • 打赏
  • 举报
回复
我用的控件叫videocap23,你下载一个,代替你写的代码
无条件为你 2008-10-07
  • 打赏
  • 举报
回复
想取到被其它窗口被挡住的图像,非常困难,我以前也努力研究过,一直未果。

关注你的问题,帮你顶一下。
dnahonker 2008-10-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yuqianyi1974 的回复:]
VIDEOCAP组件封装了vfw,网上有
[/Quote]

videocap控件就是灰鸽子用过的第三方控件,我找到了
现在这个问题该怎么解决呢?
为什么不能使用capSetCallbackOnVideoStream(CapWnd,FrameCallBack);

我找了N个搜索引擎,找了N个问题,发现这个问题一直没被解决
请各位帮帮忙
rxiao99 2008-10-07
  • 打赏
  • 举报
回复
学习
yuqianyi1974 2008-10-07
  • 打赏
  • 举报
回复
VIDEOCAP组件封装了vfw,网上有
dnahonker 2008-10-07
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 dingyi2099 的回复:]
以前写过类似程序,通过串口和Timer 实现的
[/Quote]

这是VFW的,已经查阅了很多资料
对于这个问题始终没有一个完美的解答
期待高手解惑
dingyi2099 2008-10-07
  • 打赏
  • 举报
回复
以前写过类似程序,通过串口和Timer 实现的
dnahonker 2008-10-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yuqianyi1974 的回复:]
引用 10 楼 dnahonker 的回复:
引用 8 楼 yuqianyi1974 的回复:
我用的控件叫videocap23,你下载一个,代替你写的代码


除了这个方法没别的了吗?
这个问题一直没有得到过有效的解决
videocap23怎么使用的?

很简单,带例程
[/Quote]

难道这个问题没人知道吗?
高手们,你们在哪里?
dnahonker 2008-10-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yuqianyi1974 的回复:]
引用 10 楼 dnahonker 的回复:
引用 8 楼 yuqianyi1974 的回复:
我用的控件叫videocap23,你下载一个,代替你写的代码


除了这个方法没别的了吗?
这个问题一直没有得到过有效的解决
videocap23怎么使用的?

很简单,带例程
[/Quote]

在哪下载?我是D7环境,是否能使用?
刚找了一下没找到
yuqianyi1974 2008-10-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dnahonker 的回复:]
引用 8 楼 yuqianyi1974 的回复:
我用的控件叫videocap23,你下载一个,代替你写的代码


除了这个方法没别的了吗?
这个问题一直没有得到过有效的解决
videocap23怎么使用的?
[/Quote]
很简单,带例程
dnahonker 2008-10-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yuqianyi1974 的回复:]
用VIDEOCAP组件
[/Quote]
这是个什么组件?怎么使用啊?能不能传输视频?

[Quote=引用 2 楼 iamduo 的回复:]
把代码写到Timer里。
[/Quote]

这个是可以,但是还是想把问题弄清楚
为什么capSetCallbackOnVideoStream(CapWnd,FrameCallBack);不能使用呢?
iamduo 2008-10-06
  • 打赏
  • 举报
回复
把代码写到Timer里。
yuqianyi1974 2008-10-06
  • 打赏
  • 举报
回复
用VIDEOCAP组件

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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