Чтобы иметь возможность работы с COM объектами для начала необходимо
инициализировать библиотеку COM. Это делается при помощи функции
CoInitialize(). После окончания работы необходимо вызвать функцию CoUninitialize().
Далее можно создавать COM объект и запрашивать его интерфейсы. Для этого
предназнечена функция CoCreateInstance(). После того, как мы
получили какой-либо интерфейс, при помощи функции QueryInterface()
можно получить любые другие интерфейсы COM объекта. После окончания работы
с интерфейсом для него необходимо вызывать функцию Release().
void CallObject()
{
IMyInterface1* pMyInterface1;
IMyInterface2* pMyInterface2;
HRESULT hr;
CoInitialize(NULL);
hr=CoCreateInstance(CLSID_MyComObject,
NULL,
CLSCTX_INPROC_SERVER,
IID_IMyInterface1,
(void**)&pMyInterface1);
if(FAILED(hr)) return;
pMyInterface1->Fa();
hr=pMyInterface1->QueryInterface(IID_IMyInterface2,
(void**)&pMyInterface2);
if(FAILED(hr))
{
pMyInterface1->Release();
return;
}
pMyInterface1->Release();
pMyInterface2->Fb();
pMyInterface2->Fc();
pMyInterface2->Release();
CoUninitialize();
}
|