COM组件注册方法(VC++)

1、打开VC的属性界面进行设置


2、注册DLL到系统

	CString szInfo, szPath;
	char cPath[MAX_PATH] = {0};
	GetModuleFileNameA(NULL, cPath, MAX_PATH);
	szPath += cPath;
	int nFind = szPath.ReverseFind('\\');
	if (nFind > -1)
	{
		szPath.Delete(nFind+1, szPath.GetLength() - (nFind+1));
	}
	szPath += "\\ZCB.dll";
	szInfo.Format("regsvr32  \"%s\" ", szPath);

	//执行注册
	WinExec(szInfo.GetBuffer(MAX_PATH), SW_SHOW);

3、初始化COM组件

	if(!AfxOleInit())   
	{   
		AfxMessageBox("无法初始化COM的动态连接库");   
		return FALSE;   
	}
或者
	if(CoInitialize(NULL) != NULL)

	{
		AfxMessageBox("初始化COM失败!");
	}


4、创建组件实例

有两个接口可用

	BOOL CreateDispatch(REFCLSID clsid, COleException* pError = NULL);
	BOOL CreateDispatch(LPCTSTR lpszProgID, COleException* pError = NULL);

第一个接口传入CLSID

	CLSID clsid;
	HRESULT hr=CLSIDFromProgID(OLESTR("REGCOM.Register.1"),&clsid);	//利用“根名称.类名”获取CLSID,&就是把指针给函数,也就是传址。	
	m_oZCB.CreateDispatch(clsid,NULL);					//从注册表中获取到dll路径,到这里就调用成功了。

第二个直接传入ProgID

        m_oZCB.CreateDispatch("REGCOM.Register.1",NULL);


5、使用组件了可以

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页