VC++註冊,卸載OCX控件,以及判斷是否註冊

註冊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"

}

相關文章
相關標籤/搜索