註冊OCX控件函數
BOOL CYourClass::RegistOcx()文件
{return
HINSTANCE hLib = LoadLibrary("NTGraph.ocx"); //指定要註冊的ocx文件的路徑及文件名。 控件
if (hLib == NULL) gis
{ 註冊
MessageBox("不能載入OCX文件!");
return;
}
//獲取註冊函數DllRegisterServer地址
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,"DllRegisterServer");
//調用註冊函數DllRegisterServer
if(lpDllEntryPoint!=NULL)
{
if(FAILED((*lpDllEntryPoint)()))
{
//MessageBox(Handle,"調用DllRegisterServer失敗!","失敗ing..",MB_OK);
MessageBox("OCX註冊失敗!");
FreeLibrary(hLib);
return;
};
//MessageBox(Handle,"註冊成功!","Reg",MB_OK);
MessageBox("OCX註冊成功!");
}
else
MessageBox("OCX註冊失敗!");
//MessageBox(Handle,"調用DllRegisterServer失敗!","失敗ing..",MB_OK);
}
卸載控件
BOOL CYourClass::UnRegistOcx()
{
HINSTANCE hLib = LoadLibrary("NTGraph.ocx");
//指定要註冊的ocx文件的路徑及文件名。
if (hLib==NULL)
{
//MessageBox(Handle,"不能載入Dll文件!","失敗ing..",MB_OK);
MessageBox("不能載入OCX文件!");
return;
}
//獲取註冊函數DllRegisterServer地址
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,"DllUnregisterServer");//注意這裏是DllUnregisterServer。
//調用註冊函數DllRegisterServer
if(lpDllEntryPoint!=NULL)
{
if(((*lpDllEntryPoint)()))
{
//MessageBox(Handle,"調用DllUnRegisterServer失敗!","失敗ing..",MB_OK);
MessageBox("調用DllUnRegisterServer失敗!!!");
FreeLibrary(hLib);
return;
};
//MessageBox(Handle,"註銷成功!","Unreg",MB_OK);
MessageBox("OCX註銷成功!");
}
else
//MessageBox(Handle,"調用DllUnRegisterServer失敗!!!","結果",MB_OK);
MessageBox("OCX調用DllUnRegisterServer失敗!!!");
}
判斷是否註冊
BOOL CYourClass::IsRegistOcx()
{
HKEY hKey;
BOOL bPresent;
TCHAR szPath[_MAX_PATH];
DWORD dwRegType;
DWORD cbData = sizeof szPath * sizeof TCHAR;
if(RegOpenKeyEx(HKEY_CLASSES_ROOT,"ActiveX.ActiveXControl//Clsid",0,KEY_READ,&hKey)!=ERROR_SUCCESS)
return false;
else
return true; //ActiveX.ActiveXControl爲控件的名稱和內部名稱 如"NTGRAPH.NTGraphCtrl.1//CLSID"
}