怎么枚举所有视频设备(摄像头 ),如QQ视频一样可以选择视频设备

如何枚举所有视频设备(摄像头 ),如QQ视频一样可以选择视频设备?
如题所述,请指点一下。谢谢。

------解决方案--------------------
使用DirectShow的SystemDeviceEnum
------解决方案--------------------
http://www.cnblogs.com/nemolog/archive/2005/11/03/268353.html
//参考一下吧
------解决方案--------------------
hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,IID_ICreateDevEnum, (void**)&pCreateDevEnum);
if (hr != NOERROR) {m_nVideoInputDeviceIndex = 0; return;}

hr = pCreateDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,&pEm, 0);
if (hr != NOERROR) {m_nVideoInputDeviceIndex = 0; goto EnumAudioCapture;}

pEm->Reset();

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) 
{
m_csVideoInputDevices.Add(W2T(var.bstrVal));
SysFreeString(var.bstrVal);

ASSERT(m_rgpmVideoMenu[uIndex] == 0);
m_rgpmVideoMenu[uIndex] = pM;
pM->AddRef();
}
pBag->Release();
}
pM->Release();
uIndex++;
}
pEm->Release();