Re[2]: Как получить COM объект из DLL, не регистрируя её?
От: WhiningHal Россия  
Дата: 23.02.06 14:52
Оценка:
Здравствуйте, Максим Алексейкин, Вы писали:

МА>Здравствуйте, WhiningHal, Вы писали:


МА>вот так:

МА>
МА>   HMODULE hDll = CoLoadLibrary(<lib name>);
МА>   m_fpDllGetClassObject = (DLLGETCLASSOBJECT)GetProcAddress(hDll, "DllGetClassObject");
МА>   CComPtr<IClassFactory> pCf;
МА>   CLSID clsid;
МА>   CLSIDFromString(L"{guid of the class}", &clsid);
МА>   m_fpDllGetClassObject(clsid, IID_ClassFactory, (LPVOID*)&pCf);
   pCf->>CreateInstance(...);
МА>   ...
МА>


Можно пойти немного дальше и зарегистрировать объект. Тогда не потребуется переделка клиента. Судя по MSDN, он получит корректные ссылки на объекты.

  CoRegisterClassObject(clsid, pCf, CLSCTX_INPROC_SERVER, REGCLS_SINGLEUSE, &SomeGlobalVariable);


С параметрами я недопонял: REGCLS_SINGLEUSE означает, что фабрика доступна одному процессу, или что она исчезнет из области видимости после первого вызова CoGetClassObject() для этого класса?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.