VC++注册,卸载OCX控件,以及判断是否注册

来源:互联网 发布:聊天室源码程序 编辑:程序博客网 时间:2024/05/03 18:19
BOOL CYourClass::RegistOcx(){ HINSTANCE hLib = LoadLibrary("NTGraph.ocx"); //指定要注册的ocx文件的路径及文件名。 if (hLib == NULL) { 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"}本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/luheng2006/archive/2010/08/19/5824399.aspx
原创粉丝点击