本帖最后由 jxfengzi 于 2009-12-25 16:20:11 编辑

解决方案 »

  1.   

    1.需要将组件注册为CATID_SafeForInitializing和CATID_SafeForScripting安全类别
    2.需要提供IObjectSafety接口例子代码参考
    http://www.codeproject.com/KB/COM/CompleteActiveX.aspx
      

  2.   

    Automation服务器不能创建对象。对,是安全问题。按照楼上的方法就应该可以。还有一种办法,就是你的控件的继承列表中添加IObjectSafetyImpl,然后在COMMAP中添加相应接口。class ATL_NO_VTABLE CYourCtl :
    ...
       public IObjectSafetyImpl<CYourCtl,
          INTERFACESAFE_FOR_UNTRUSTED_CALLER |
             INTERFACESAFE_FOR_UNTRUSTED_DATA>
    {
    public:
       BEGIN_COM_MAP(CYourCtl)
    ...
          COM_INTERFACE_ENTRY_IMPL(IObjectSafety) // Tie IObjectSafety
                                                  // to this COM map
       END_COM_MAP()
    ...
    }
      

  3.   

    除了IOBJECTSAFE还有一种可能是你没打包吧?发布成网页最好是打成CAB包