回 帖 发 新 帖 刷新版面

主题:如何用PB实现电脑摄像?

各位大侠:
  你们好!
    我是PowerBuilder的初学者,请教各位: 如何在PowerBuilder的程序中实现对电脑摄像头进行编程(即如何用PB实现电脑摄像)?
  请各位指点指点.谢谢!!!

回复列表 (共2个回复)

沙发

有些摄像头好象不兼容这个功能

板凳

我试过,可以用,但录像和拍照没有试成功!
//定义变量
uint lhand



//定义常数
long WM_USER=1024
long WM_CAP_START = WM_USER 
long WM_CAP_STOP = WM_CAP_START + 68 
long WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10 
long WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11 
long WM_CAP_SAVEDIB = WM_CAP_START + 25 
long WM_CAP_GRAB_FRAME = WM_CAP_START + 60 
long WM_CAP_SEQUENCE = WM_CAP_START + 62 
long WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20 
long WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+  63 
long WM_CAP_SET_OVERLAY =WM_CAP_START+  51 
long WM_CAP_SET_PREVIEW =WM_CAP_START+  50 
long WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START +6 
long WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START +2 
long WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START +3 
long WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START +5 
long WM_CAP_SET_SCALE=WM_CAP_START+  53 
long WM_CAP_SET_PREVIEWRATE=WM_CAP_START+  52 



//定义api
function ulong capCreateCaptureWindowA(string lpszWindowName,ulong dwStyle,long x ,long y ,long nWidth ,long nHeight ,ulong ParentWin ,long  nId ) LIBRARY 'AVICAP32.DLL' 



//初始化代码
string lpszName
ulong l1
l1=handle(w_main)



lpszName='摄像头界面...'
lhand=capCreateCaptureWindowA(lpszName,262144+12582912+1073741824 + 268435456 ,0,0,200,200,l1,0)
if lhand <> 0 then   
  send(lhand, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0) 
  send(lhand, WM_CAP_SET_CALLBACK_ERROR, 0, 0) 
  send(lhand, WM_CAP_SET_CALLBACK_STATUSA, 0, 0) 
  send(lhand, WM_CAP_DRIVER_CONNECT, 0, 0) 
  send(lhand, WM_CAP_SET_SCALE, 1, 0) 
  send(lhand, WM_CAP_SET_PREVIEWRATE, 66, 0) 
  send(lhand, WM_CAP_SET_OVERLAY, 1, 0)
  send(lhand, WM_CAP_SET_PREVIEW, 1, 0) 
end if



//保存到文件
string s
s='c:\save.avi'
if lhand<>0 then
Send(lhand,WM_CAP_FILE_SET_CAPTURE_FILEA,0, s);
Send(lhand,WM_CAP_SEQUENCE, 0, 0)  //开始捕捉
end if



//停止保存
  send(lhand, WM_CAP_STOP, 0, 0) 



//保存为图片
string s
s='c:\save.bmp'
if lhand <> 0 then 
Send(lhand,WM_CAP_SAVEDIB,0,s);
end if

我来回复

您尚未登录,请登录后再回复。点此登录或注册