鲁格10 22射程:VC++注册,卸载OCX控件,以及判断是否注册

来源:百度文库 编辑:九乡新闻网 时间:2024/05/08 09:07:01
http://blog.csdn.net/luheng2006/archive/2010/08/19/5824399.aspx

注册OCX控件

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"

}


相关:VC++ 注册与卸载OCX控件的小工具源程序

下载:
1. http://www.uudisc.com/user/looooooooong/file/3913386
2. http://www.codefans.net/soft/8071.shtml

(#)