编写完的组件一定要注册才能使用吗?我为什么要问这个问题呢!大家一定觉得奇怪!
原因是小弟编程水平太差,注册表已经被我搞得不成样子了,每次调试就要去掉一个注册表的位置,系统已经提醒我键值不够用了!
有办法吗?

解决方案 »

  1.   

    注册是应该,可以做在程序里,也可以regsvr32  "D:\hello.dll"
      

  2.   

    程序:
    //pszDllName  dll或ocx的路径如 c:\aa.dll ||  d:\bb.ocx
    void MyRegisterFunc(LPCTSTR pszDllName)
    {
    //ActiveX 控 件 的 路 径 及 文 件 名
    //LPCTSTR pszDllName="c:/1/LineSym.dll";
       // 装 载ActiveX 控 件
    HINSTANCE hLib = LoadLibrary(pszDllName);
    if (hLib < (HINSTANCE)HINSTANCE_ERROR)
    {
    ::MessageBox(NULL,"不能载入dll文件!","结果",MB_OK);
    return;
    }
    // 获 取 注 册 函 数DllRegisterServer 地 址
        FARPROC lpDllEntryPoint; 
        lpDllEntryPoint = GetProcAddress(hLib,_T("DllRegisterServer"));
          // 调 用 注 册 函 数DllRegisterServer
    if(lpDllEntryPoint!=NULL)
        {
    if(FAILED(( *lpDllEntryPoint)()))
    {
    ::MessageBox(NULL,"调用DllRegisterServer失败!","结果",MB_OK);
    FreeLibrary(hLib);
    return;
    };
    ::MessageBox(NULL," 注 册 成 功"," 结 果",MB_OK);
         }
         else
    ::MessageBox(NULL," 调用DllRegisterServer失败!","结 果",MB_OK);
    }
      

  3.   

    记不太清,好像是 regsvr32 d:\**.dll /u
      

  4.   

    是不是有的不要注册。如果loadliabrary登函数由你直接调用而不是通过cocreateinstance(EX)间接调用,装载类库时你可以指定路径而不要去注册表收缩啊。