Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Jak pri enum. video kodeku (z monikeru) ziskat CLSID?

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Jak pri enum. video kodeku (z monikeru) ziskat CLSID?

Autor: terrrence

15:03:23 26.03.2009

No to je potom tedy skoda. Cekal bych (vzhledem k nazvu "FriendlyName") ze vse co takova enumerace pomoci monikeru dela je, ze umoznuje pristup k hodnotam klicu zadane kategorie z [bold]HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11d0-BD40-00A0C911CE86}\Instance[/bold] a tam je u kazdeho klice vedle hodnoty "[bold]FriendlyName[/bold]" take hodnota "[bold]CLSID[/bold]". Je tedy skoda ze ta uz pres moniker pristupna neni.

Potom tedy abych dosahl pozadovaneho vysledku, musim nejspis prochazet registr rucne, bez pouziti monikeru a k CLSID se dostanu snadno.

Jen bych potreboval vedet, jak se rozlisi zda nejake CLSID spada do nejake kategorie (zde konkretne [bold]CLSID_VideoCompressorCategory[/bold]?

Citovat příspěvek

 

Re: Jak pri enum. video kodeku (z monikeru) ziskat CLSID?

Autor: Jan Barnet

9:10:28 26.03.2009

Obávám se, že z toho monikeru chceš vyzískat něco, co tam není.

Citovat příspěvek

 

Jak pri enum. video kodeku (z monikeru) ziskat CLSID?

Autor: terrrence

10:17:19 20.03.2009

Dobry den.
Rad bych dal uzivateli na vyber ze seznamu dostupnupnych video kodeku (nebo obecne: prochazim nejakou CLSID kategorii dostupnych trid). K tomu pouzivam IEnumMoniker a nasledne IPropertyBag daneho monikeru, tak jak jsem to vykoukal ze samplu od Microsoftu.

Muj problem je, ze kdyz si uzivatel prislusny kodek (tridu) vybere, rad bych si zaznamenal CLSID tohoto kodeku a priste se na nej jiz odkazoval jen pres toto CLSID. Bohuzel nejsem schopen prijit na to, jak ho z monikeru zjistit.

Ve zminenem samplu si pouze ulozi index z takto zjisteneho seznamu a kdyz chteji pozdeji ziskat instanc teto tridy, znovou provadeji enumeraci a na prislusnem indexu pomoci IMoniker::BindToObject() ji vytvori.

Jak tedy ziskat onu CLSID, abych priste instanci vytvarel jen s jeho pomoci?

[code]

//Enumerate Video Compressors
CComPtr cpEnumMoniker;
FAIL_RET( cpCreateDevEnum->CreateClassEnumerator(CLSID_VideoCompressorCategory, &cpEnumMoniker, 0) );
FAIL_RET( cpEnumMoniker->Reset() );

int i = 0;
while(1)
{
//Next moniker
ULONG nFetched = 0;
CComPtr cpMoniker;
hr = cpEnumMoniker->Next(1, &cpMoniker, &nFetched);
if(!cpMoniker)
break;

CComPtr cpPropBag;
hr = cpMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void**)&cpPropBag);
if(!FAILED(hr))
{
VARIANT var;
var.vt = VT_BSTR;
hr = cpPropBag->Read("FriendlyName", &var, NULL);

//??????????
//VARIANT var;
//var.vt = VT_BSTR;
//hr = cpPropBag->Read("CLSID", &var, NULL);
}
} [/code]

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: