zoukankan      html  css  js  c++  java
  • VC++注册,卸载OCX控件,以及判断是否注册

    注册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"

    }

  • 相关阅读:
    世界上最遥远的距离(泰戈尔)
    肩周炎?
    [转]C#基础概念二十五问
    [转]ASP.NET 2.0的缓存技术简介
    SQL Server 2005下的分页SQL
    [转]基本的缓存类操作封装(抽象类)
    GridView鼠标经过行变色
    推荐一个好用的.NET2.0下的发送EMail的库
    Data Access Application Block for .NET
    Pet Shop 4.0的缓存机制
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/4113200.html
Copyright © 2011-2022 走看看