DShow - Eigenschaften von IPropertyBag
-
Hi
Ich versuche gerade mehrere WebCams vom gleichen typ gleichzeitig anzusprechen.
Folgendermaßen initialisiere ich die Kameras:
if(CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IFilterGraph,(void**)&myFilterGraph)!=S_OK) { MessageBox(g_hWnd,(LPCTSTR)L"FilterGraph konnte nicht gestartet werden",(LPCTSTR)L"Fehler",MB_OK); myFilterGraph=NULL; } if(CoCreateInstance(CLSID_SystemDeviceEnum,NULL,CLSCTX_INPROC,IID_ICreateDevEnum,(void**)&myDeviceEnumerator)!=S_OK) { MessageBox(g_hWnd,(LPCTSTR)L"SystemDeviceEnumerator konnte nicht gestartet werden.",(LPCTSTR)L"Fehler",MB_OK); myDeviceEnumerator=NULL; } hr=myDeviceEnumerator->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,&myEnumCategory,0); if(hr==S_OK) { //erfolgreich, also alle Devices auflisten IMoniker* myMoniker; while(myEnumCategory->Next(1,&myMoniker,&cFetched)==S_OK) { //ein weiteres Device gefunden hr=myMoniker->BindToStorage(0,0,IID_IPropertyBag,(void**)&myDeviceEigenschaften); if(hr==S_OK) { VARIANT var; VariantInit(&var); hr=myDeviceEigenschaften->Read(L"DevicePath",&var,NULL); if(hr==S_OK) { MessageBox(g_hWnd,(LPCWSTR)var.bstrVal,(LPCWSTR)L"Name",MB_OK); } VariantClear(&var); myDeviceEigenschaften->Release(); } myMoniker->Release(); } } else { MessageBox(g_hWnd,(LPCWSTR)L"CreateClassEnumerator schlug fehl",(LPCWSTR)L"Fehler",MB_OK); myEnumCategory=NULL; }Dummerweise gibt es das Property DevicePath nicht.
Jedoch haben alle Kameras den gleichen "FriendlyName" weshalb ich diesen nicht zum unterscheiden der Kameras benutzen kann.Hat jemand eine Liste aller verfügbaren Propertys, oder zumindest eines Propertys, welches jede Kamera ganz genau idendifiziert?
Hab zwar schon eigentlich eine passende Antwrot in einem anderen Forum gefunden, jedoch funktioniert das bei mir nicht.
Habe auch schon IPropertyBag2 probiert, aber damit geht garnichts, das enumerieren des IMoniker Interfaces schlägt gleich fehl.
Mfg
reinhold Fischer
-
Gabs dafür eine Lösung???
habe das gleiche Problem, auch wenn Jahre vergangen sind

guru313
-
myMoniker->GetDisplayName
-
mom ich probiers...
-
is der gleiche wert für beide cameras.....
?
es sind schon gleiche camera-typen...aber irgendeine unterschiedliche ID müssen die doch haben....
-
also ich habe 2 Kameras an einem Hub und es sind 2 von der gleichen Firma jedoch eine sw und eine in Farbe.
Selbst mit GraphEdit seh ich immer nur die gleiche device-id.
liegts am Hub?any ideas?
Der Viewer der Firma zeigt übrigens zwei nochmal andre Namen und beide gleichzeitig. Nur hab ich die Sourcen davon nicht....gruss
guruu