COM元件註冊方法(VC++)
阿新 • • 發佈:2019-01-31
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、使用元件了可以