创建完COM对象后,接下来是如何调用COM组件了。这里是在c++中的调用COM对象的方法。
创建COM对象一般有三种方法,正常创建一个对象,使用CoCreateInstance函数。若在远程系统中创建一个对象,使用CoCreateInstanceEX函数。而创建多个同一CLSID的对象时,使用CoGetClassObject函数。
1.先简单的使用CoCreateInstance函数创建一个COM对象。
//要加载生成的文件和这个c文件。
#include "ATLProject1_i.h"
#include "ATLProject1_i.c"
int _tmain(int argc, _TCHAR* argv[])
{
//声明的是接口的指针
ITryCOM *it = NULL;
//声明一个HRESULT变量
HRESULT hr;
//初始化COM,并告诉Windows以单线程的方式创建COM对象
hr = CoInitialize(0);
//使用SUCCEDED宏判断是否初始化成功。
if(SUCCEEDED(hr)){
//加载COM对象
hr = CoCreateInstance(CLSID_TryCOM,NULL,CLSCTX_INPROC_SERVER,IID_ITryCOM,(void**)&it);
//检测是否加载成功
if(SUCCEEDED(hr)){
long ReturnValue ;
printf("Find DLL\n");
int a= 1;
int b = 2;
it->Add(a,b,&ReturnValue);
printf("%d",ReturnValue);
//对于com对象,使用后都要使用release进行释放
it->Release();
}
//关闭当前线程的COM库,卸载所有dll,并释放资源。
CoUninitialize();
}
system("pause");
return 0;
}
这里的两个重要函数CoCreateInstance 和 CoUninitialize。
对于CoUninitialize()函数,CoUninitialize关闭当前线程的COM库,卸载线程加载的所有dll,释放任何其他的资源,关闭在线程上维护所有的RPC连接。
在一个线程调用了CoInitial