我写了一个包含ActiveX控件的MFC程序。然后编译成了release版本,但是在别人的电脑上不能运行,我猜测是不是因为别人的电脑上没有注册我程序中用到的ActiveX控件呢?如何在代码中注册ActiveX控件呢?

解决方案 »

  1.   

    汗搜索一下都不肯了吗??? regsvr32.exe,具体怎么用自己查,如果控件需要证书,别忘了证书
      

  2.   

    看看这个吧
    http://topic.csdn.net/t/20030514/09/1780663.html
      

  3.   


    #include <olectl.h> 
    BOOL RegisterModule(LPCTSTR fileName, CString &e_mess) 
    {
      BOOL bError = 0;
        
      if(bError == 0)
      {
        CFileFind find;
        if(!find.FindFile(fileName))//提示缺少必要的支持文件
        {
          e_mess.Format( _T("找不到文件 %s\r\n"), fileName);
          bError = -1;
        }
        find.Close();
      }  if(bError == 0)
      {  
        //使用短路径名主要是为兼容Win98
        TCHAR shortfileName[MAX_PATH + 1] ={0};
        GetShortPathName(fileName, shortfileName, MAX_PATH);
        
        typedef HRESULT (STDAPICALLTYPE *CTLREGPROC)() ; // Requires olectl.h
        // Path to OLE Control in shortfileName
        HMODULE hModule = LoadLibrary(shortfileName);
        if(hModule)
        {
          CTLREGPROC DLLRegisterServer = (CTLREGPROC)GetProcAddress(hModule,"DllRegisterServer" ) ;
          if(DLLRegisterServer)
          {
            if(DLLRegisterServer() != S_OK)
            {
              e_mess.Format(_T("注册模块失败 %s\r\n"), fileName);
              bError = -2;
            }
          }
          else
          {
            e_mess.Format(_T("模块%s找不到指定注册入口\r\n"), fileName);
            bError = -3;
          }
          FreeLibrary(hModule) ;
        }
        else
        {
          e_mess.Format(_T("加载模块失败 %s\r\n"), fileName);
          bError = -4;
        }
      }
        
      return (bError == 0);
    }
      

  4.   

    打开运行
    regsvr32  绝对路径ocx