rt,而且还判断下电脑是否有摄像头,貌似这个还比较好判断.
用WM_CAP_DRIVER_GET_CAPS这个消息.
最好不要说某个组件可以,然后就完了,我知道dspack可以.
我想知道自己怎么弄
用WM_CAP_DRIVER_GET_CAPS这个消息.
最好不要说某个组件可以,然后就完了,我知道dspack可以.
我想知道自己怎么弄
解决方案 »
- CheckBox和RadioButton在SQLserver2000里面读取状态,必须这么写吗?有没有简单的办法!!
- 强烈召唤被BS者 hthunter(核桃-春天过去了……)
- 如何判断控件是否在设计阶段还是程序运行阶段
- 请问创建临时表的问题
- 奇怪:DELPHI5中的类型文件是不是存在着BUG
- 请教一个功能的实现
- 有关Access的日期查询问题
- TQuery查询问题!
- delphi5里怎么没有html的控件?
- 关于提取文件路径和文件名
- VirtualTrees控件里如果设置多级节点如何最佳设计数据库(例如:高一年级,高一01班,高一01班全体,高一01班在籍)
- delphi APIHOOK网络函数
ErrorCode : integer;
SockAdd_In : TSockAddrIn;
begin
SockAdd_In.sin_family := PF_INET;
SockAdd_In.sin_port := htons(FPort);//端口
SockAdd_In.sin_addr.S_addr := htonl(INADDR_ANY);//監聽本機所有地址的端口
ErrorCode := bind(FSock,SockAdd_In,sizeof(SockAdd_In));//返回錯誤WSAEADDRINUSE 表示使用中
詳細錯誤代碼參考 bind的api 說明
m_Pmc : IMediaControl;
m_pGraph ,m_pVideo: IGraphBuilder;
m_pMS : IMediaSeeking;
m_pVCamRenderer ,p_VCamTrans: IBaseFilter;
MediaSeeking: IMediaSeeking;
MediaPosition: IMediaPosition;
Duration,CurrentPos : int64;
VideoWindow:IVideoWindow;
// m_pConfig : IVCamRenderConfig; //接口变量
m_pCamTranconfig :IVCamTransConfig;
Playing ,IsOver,IsOpenFile: Boolean;
pControl : IMediaControl; //用户命令接口,用来控制过滤器容器
pEvent : IMediaEvent; //过滤器容器事件接口
begin
PM := nil; pbc := nil;
hr := CoCreateInstance(CLSID_SystemDeviceEnum, nil,
CLSCTX_INPROC_SERVER, ICreateDevEnum, pCreateDevEnum);//创建枚举器组件
if(hr<0) then exit;
// 为指定的类型目录创建一个枚举器
hr := pCreateDevEnum.CreateClassEnumerator(CLSID_VideoInputDeviceCategory, pEnum, 0);
if(hr<0) then exit;
if (pEnum <> nil) then
begin
PEnum.Reset;
i :=0;
while (pEnum.Next(1, pM, cFetched) = S_OK) do //枚举每一个IEnumMoniker
begin
pM.BindToStorage(nil, nil, IPropertyBag, pBag);
VariantInit(varName);
pBag.Read('FriendlyName', varName, nil);//设备名称
if (idx = i) then //返回设备的名称
break
else
begin
Inc(i);
end;
end;
end;
pEnum := nil;
pCreateDevEnum := nil;
// we found it
if (pM <> nil) then
begin
pBuilder := nil;
pCapSrcFilter := nil;
CreateBindCtx(0, pbc);
pM.BindToObject(pbc, nil, IBaseFilter, pCapSrcFilter);//生成绑定到设备上的filter
pbc := nil;
eid := 0;
Test:= 'bright[-255..255]={100}, contrast[0..32]={10}';
CoCreateInstance(CLSID_CaptureGraphBuilder2, nil,CLSCTX_INPROC_SERVER, ICaptureGraphBuilder2, pBuilder);
CoCreateInstance(CLSID_FilterGraph, nil,CLSCTX_INPROC, IGraphBuilder, m_pGraph);
pBuilder.SetFiltergraph(m_pGraph);//将其添加到FILTER管理器中
// m_pGraph.AddFilter(m_pVCamRenderer, 'Renderer');
m_pGraph.AddFilter(pCapSrcFilter, 'Source');
m_pGraph.QueryInterface(IID_IMediaControl, m_pMC);
hr := pBuilder.RenderStream(nil, nil, pCapSrcFilter, nil, P_VCamTrans);//连接一个源Filter输出到下一 Filter
// hr := pBuilder.RenderStream(nil, nil, P_VCamTrans, nil, m_pVCamRenderer);//连接一个源Filter输出到下一 Filter
// if (hr<0) then Exit;
Button3.Enabled := True;
if (m_pMC <> nil) then
try
(m_pGraph as IMediaControl).Run;
pCapSrcFilter := nil;
pBuilder := nil;
pCapSrcFilter := nil;
pM := nil;
Except
end;
end;这是我之前写过的一段代码,你整理一下就可以了