Получение версии COM-объекта - PullRequest
1 голос
/ 13 ноября 2008

Я обращаюсь к COM-объекту .NET из C ++. Я хочу знать информацию о версии этого COM-объекта. Когда я открываю TLB в OLEVIEW.exe, я вижу информацию о версии, связанной с coclass. Как я могу получить доступ к этой информации из C ++? Это информация, которую я получаю:

[
  uuid(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX),
  version(1.0),
  custom(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, XXXX)
]
coclass XXXXXXXX{
    [default] interface XXXXXXXX;
    interface _Object;
    interface XXXXXXXX;
};

Ответы [ 2 ]

1 голос
/ 16 ноября 2008

По сути, в конце я понял, что мне нужно получить информацию, используя интерфейс ITypeLib. Итак, вот решение:

  BSTR bstrTLBNameWithPath = ""; //set this to whatever you want

  if( bstrTLBNameWithPath )
  {
    ITypeLib * pTlib = 0;
    HRESULT hr = LoadTypeLib( bstrTLBNameWithPath,&pTlib );
    if( SUCCEEDED( hr ) && pTlib )
    {
      TLIBATTR * pTlibattr = 0;
      hr = pTlib->GetLibAttr( &pTlibattr );
      if( SUCCEEDED(hr) && pTlibattr )
      { 
        //do something with the info

        //release the information
        pTlib->ReleaseTLibAttr(pTlibattr);
        pTlib->Release();
      }
    }
  }
1 голос
/ 13 ноября 2008

В проекте code есть класс, который будет делать это во время выполнения.

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