C++远程监控系统发送端-搜索视频设备,并返回视频设备名列表

//搜索视频设备,并返回视频设备名列表
void CVideoPlay::FindDevice(CStringList &DevName)
{
    HRESULT hr;
    int uIndex=0;

    //创建一个系统设备枚举器接口
    ICreateDevEnum *pCreateDevEnum;  
    hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,
              IID_ICreateDevEnum, (void**)&pCreateDevEnum);  

    //创建一个类型枚举器,指向系统的视频设备列表
    IEnumMoniker *pEm;  
    hr = pCreateDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,
                        &pEm, 0);
    HELPER_RELEASE(pCreateDevEnum);
    if(pEm)
    {
        pEm->Reset();
        ULONG cFetched;
        IMoniker *pM;
        //枚举每个视频设备
        while(hr = pEm->Next(1, &pM, &cFetched), hr==S_OK)
        {
            IPropertyBag *pBag;
            hr = pM->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pBag);
            if(SUCCEEDED(hr))
            {
                VARIANT var;
                var.vt = VT_BSTR;
                //得到视频设备的友好名称
                hr = pBag->Read(L"FriendlyName", &var, NULL);
                if (hr == NOERROR)
                {
                    CString achName;
                    WideCharToMultiByte(CP_ACP, 0, var.bstrVal, -1, achName.GetBuffer(50),80,NULL, NULL);
                    achName.ReleaseBuffer();
                    //将设备名添加到设备名列表末尾
                    DevName.AddTail(achName);        
                    SysFreeString(var.bstrVal);
                }
                  HELPER_RELEASE(pBag);
      
            }    
            HELPER_RELEASE(pM);
            uIndex++;
        }
           HELPER_RELEASE(pEm);
    }
}

CVideoPlay::CVideoPlay()
{
   pigb  = NULL;
   pimc  = NULL;
   pimex = NULL;
   pivw  = NULL;
   pmp   = NULL;
   pVCap = NULL;
   CappFg = NULL;
   CapPigb = NULL;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D20187

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值