LoadTypeLib - загрузка по IID
От: Tom Россия http://www.RSDN.ru
Дата: 11.10.04 09:04
Оценка:
В стандартноа API есть возможность загрузить библиотеку типов только по пути к файлу. Данное API позволяет это сделать, зная только IID.

HRESULT LoadTypeLib(
 IID* piid,
 ITypeLib** ppTypeLib)
{
 if (ppTypeLib == 0)
  return E_POINTER;

 *ppTypeLib = 0;

 USES_CONVERSION;

 wchar_t siid[64];
 StringFromGUID2(*piid, siid, sizeof(siid));

 TCHAR Key[256];
 _stprintf(Key, _T("Interface\\%s\\TypeLib"), W2CT(siid));

 TCHAR TypeLibIID[64] = {0};
 long cb = sizeof(TypeLibIID) * sizeof(TCHAR);
 RegQueryValue(
  HKEY_CLASSES_ROOT,
  Key,
  TypeLibIID,
  &cb);

 if (_tcslen(TypeLibIID) == 0)
  return E_FAIL;

 _stprintf(Key, _T("TypeLib\\%s\\1.0\\0\\win32"), TypeLibIID);

 TCHAR TypeLibPath[MAX_PATH] = {0};
 cb = sizeof(TypeLibPath) * sizeof(TCHAR);
 RegQueryValue(
  HKEY_CLASSES_ROOT,
  Key,
  TypeLibPath,
  &cb);

 if (_tcslen(TypeLibPath) == 0)
  return E_FAIL;

 return LoadTypeLib(T2CW(TypeLibPath), ppTypeLib);
}
Posted via RSDN NNTP Server 1.9 gamma
Народная мудрось
всем все никому ничего(с).