初学COM,有个问题不明白,进程内组件的自动注册问题,说是自动注册,其实还要手动运行Regsvr32,然后会跳出一个对话框提示成功或者失败,如果我做好一个软件,打包发给客户,难道还要客户输入regsvr32这样的命令么?

解决方案 »

  1.   

    安装制作程序全部支持组件的注册,请仔细看看安装制作程序的帮助吧,一般选择DLL文件,再选择“这是一个COM组件”或者之类的命令即可,安装时会自动注册的
      

  2.   

    首先,regsvr32程序有个参数可以让其不弹出提示窗口,其次,在自己的代码中注册控件也是可以的。就是用LoadLibrary加载这个ocx或dll,然后用GetProcAddress....看代码吧:
    BOOL RegisterControl(LPCTSTR lpszfname)
    {
    BOOL rtn = FALSE;
    HINSTANCE hLib = ::LoadLibrary(lpszfname);
    if(hLib != NULL)
    {
    REGISTERFCN lpregister;
    lpregister = (REGISTERFCN)::GetProcAddress(hLib,_T("DllRegisterServer"));
    if(lpregister != NULL)
    {
    HRESULT hr = (*lpregister)();
    if(hr == S_OK)
    rtn = TRUE;
    }
    ::FreeLibrary(hLib);
    } return rtn;
    }