Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > Get ProgID or CLSID if i have only p to some IDisp


Автор: vippavlo 29.10.2007, 14:16
Извините, что на англ, а то писал на англ форуме... не захотелос переводить 
How i can get ProgID or CLSID if i have only pointer to some IDispatch interface. 
For example:
CComPtr< ISome > spSome;

I was trying to do the next:
Код


CComPtr spTypeInfo;
hr = m_spSome->GetTypeInfo( 100, LOCALE_SYSTEM_DEFAULT, &spTypeInfo );
if( FAILED( hr = PrepareFuncInfo() ) )
{
return hr;
}
TYPEATTR *pattr = NULL;
hr = spTypeInfo->GetTypeAttr( &pattr );
if( FAILED( hr = PrepareFuncInfo() ) )
{
spTypeInfo.Release();
return hr;
}
CComPtr spTypeInfo2;
HREFTYPE hrType = 0;
while( SUCCEEDED( hr = spTypeInfo->GetRefTypeInfo( hrType, &spTypeInfo2 ) ) )
{
TYPEATTR *pattr2 = NULL;
hr = spTypeInfo2->GetTypeAttr( &pattr2 );
if( FAILED( hr = PrepareFuncInfo() ) )
{
spTypeInfo2.Release();
spTypeInfo.Release();
return hr;
}
if( pattr2->typekind == TKIND_COCLASS )
{
BSTR bsCLSID;
ProgIDFromCLSID( pattr2->guid, &bsCLSID );
m_bsProgIDName = bsCLSID;
spTypeInfo2.Release();
spTypeInfo.Release();
return S_OK;
}
hrType++;
}


But it doesn't work in variant, when i have in type lib more then 1 coclass smile
I can to do this using type lib, but i want to find another way for solving this problem. If it's exists — please tell? how i can to do this smile Because i so tired with this...... smile

Автор: zkv 29.10.2007, 16:15
Цитата(vippavlo @  29.10.2007,  14:16 Найти цитируемый пост)
не захотелос переводить 

smile  если вам не захотелось, чтобы задать вопрос, почему нам должно захотеться, чтобы ответить на него.

Автор: vippavlo 29.10.2007, 16:45
Цитата(zkv @ 29.10.2007,  16:15)
Цитата(vippavlo @  29.10.2007,  14:16 Найти цитируемый пост)
не захотелос переводить 

smile  если вам не захотелось, чтобы задать вопрос, почему нам должно захотеться, чтобы ответить на него.

Я его задал, кто может прочитать, тот прочитаєт ;)

Добавлено через 3 минуты и 55 секунд
I was receive a proposition to use IProvideClassInfo, but not all objects implement this interface. I need reliable method wich will be suitable for all objects!
Please, help!!!! smile  smile 

Автор: Cycle 2.12.2007, 17:52
Судячи з опису інтерфейсу IDispatch в MSDN, то ніяк.

Извините что не на русском.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)