1. 程式人生 > >COM元件註冊方法(VC++)

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、使用元件了可以