1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| IEnumMoniker *pClassEnum;
ICreateDevEnum *pDevEnum;
ULONG cFetched;
IMoniker *pMoniker;
HRESULT hr;
TStringList *DeviceName;
pDevEnum = NULL;
pClassEnum = NULL;
pMoniker = NULL;
pSrc = NULL;
DeviceName=new TStringList;
CoInitialize(NULL);
CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC,IID_ICreateDevEnum, (void **)&pDevEnum);
hr=pDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pClassEnum, 0);
while (pClassEnum->Next(1, &pMoniker, &cFetched) == S_OK)
{
IPropertyBag *pPropBag;
pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag);
VARIANT varName;
VariantInit(&varName);
hr = pPropBag->Read(L"FriendlyName",&varName,0);
if (SUCCEEDED(hr))
{
Variant V(varName);
DeviceName->Add(AnsiString(V));
}
VariantClear(&varName);
pPropBag->Release();
pMoniker->Release();
}
CoUninitialize(); |
Partager