В стандартноа 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