我们自己写的.dll bho控件,不用regsvr32命令二是通过编码,或者在可执行程序中实现自动注册,而不是手动注册,怎么办?不能是CreateProcess命令创建 cmd,输入参数吧?

解决方案 »

  1.   

    BOOL CRegisterOcxApp::RegistOcx(CString strFileName)
    {
    HINSTANCE hLib = LoadLibrary(strFileName);      //指定要注册的ocx文件的路径及文件名。
        if (hLib == NULL)
        {
             AfxMessageBox("不能载入OCX文件!");
             return FALSE;
        }
        //获取注册函数DllRegisterServer地址
        FARPROC lpDllEntryPoint;
        lpDllEntryPoint = GetProcAddress(hLib,"DllRegisterServer");
        //调用注册函数DllRegisterServer
        if(lpDllEntryPoint!=NULL)
        {
            if(FAILED((*lpDllEntryPoint)()))
            {
                AfxMessageBox("OCX注册失败(2)!");
                FreeLibrary(hLib);
                return FALSE;
            }
            AfxMessageBox("OCX注册成功!");
        }
        else
    {
            AfxMessageBox("OCX注册失败(1)!");
    return FALSE;
    }
    return TRUE;
    }
      

  2.   

    strFileName里需要包含路径信息,可以是相对的或绝对路径
      

  3.   

    如果你写的是activex控件
    建立的工程里面应该有DllRegisterServer