做了一个activex, 在网页中嵌入使用, 目前嵌入对象用的是:<object         
 classid="CLSID:E1A66278-D0AD-436C-BB19-00D78FA7F4C1" name="UpLoadDlg"
 id="UpLoadDlg" width=0 height=0>传递参数, 调用方法:document.getElementById("UpLoadDlg").Folder = "aaa";
document.getElementById("UpLoadDlg").UserID = "bbb";
document.getElementById("UpLoadDlg").Sid = "ccc";
document.getElementById("UpLoadDlg").Run();调用activex的方法就不说了, 现在的 问题是希望在网页中能够用
<object         
 classid="CLSID:E1A66278-D0AD-436C-BB19-00D78FA7F4C1" name="UpLoadDlg"
 id="UpLoadDlg" width=0 height=0 codebase="UpLoad.CAB#version=1,0,1,3"">
<param name="Folder" value="aaa">
<param name="UserID" value="bbb">
<param name="Sid" value="ccc">
</object>的形式嵌入对象并传递参数, 也就是说第一要把activex做成一个自注册的cab包
第二好像在开发的时候要作些工作才能支持<param name="Sid" value="ccc">形式的参数传递目前我的Folder, UserID, Sid都是自动化接口提供的属性, 听说要做成“控件属性”才能支持以上形式的参数传递, 请问一下, 该如何让我的控件做到这一点, 需要改odl文件? 还是其他什么?控件安装的问题, 决定提供一个exe安装包供用户下载使用, 但在网页中还是要用cab包
我用IExpress做了一个Activex cab安装包, 也参照网易那个控件的格式放了一个inf安装文件进去
但使用中好像效果不对, 没有象3721那种自动下载, 然后有个提示“是否安装”之类的。是不是因为我的控件没有安全认证?

解决方案 »

  1.   

    http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/safety.asp
      

  2.   

    是不是因为我的控件没有安全认证?
       是的,cab要进行签证,才有你说的那种提示效果;或者可以做到改变客户端的ie安全级别,允许没有签证的cab.
    调用activex的方法就不说了, 现在的 问题是希望在网页中能够用
       你所要的这个功能是ActiveX属性包的实现。网上很多的,以下是我写的日志:1)描述:在ActiveX中,增加属性包后,在网页中可以通过属性包在控件初始化前将参数传入控件中,如下:<object id='' classid=''><param name='str' value='test'></object> 2)步骤:  a)为控件接口添加属性.在WorkSpace中,右击接口名,选择"Add property"后,在property中分别添入参数类型(BSTR)和属性名(Name)即可.  b)在类中加入继承 public IPersistPropertyBagImpl<CXXX>,并添加响应的接口映射,如下;BEGIN_COM_MAP(CXXX)   COM_INTERFACE_ENTRY(IPersistPropertyBag)
    END_COM_MAP() BEGIN_PROP_MAP(CXXX)
     PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
     PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
     // Example entries
     // PROP_ENTRY("Property Description", dispid, clsid)
     // PROP_PAGE(CLSID_StockColorPage)  PROP_ENTRY("Name", 6, CLSID_NULL)       // 6 -> dispid,dispid为接口属性的idEND_PROP_MAP() 你可以通过双击接口,在接口定义中看到dispid.如下:id(6)  [propget, id(6), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
      [propput, id(6), helpstring("property Name")] HRESULT Name([in] BSTR newVal);   c)定义一个成员变量,用来存放传入的参数.CComBSTR m_bstrValue;在你定义的属性中,(加入如下黑体的行)用以保存传进来的参数值.STDMETHODIMP CVMShow::get_Name(BSTR *pVal)
    {
     *pVal = m_bstrValue.Copy();
     return S_OK;
    }STDMETHODIMP CVMShow::put_Name(BSTR newVal)
    {
     m_bstrValue= newVal;
     return S_OK;
    }  d)网页的交互为,如果控件有窗口的话.(这些交互在ActiveX对话框的初始化前就进行了)<object id='' classid=''><param name='Name' value='test'></object>
      

  3.   

    抢分来了,活活
    http://www.vckbase.com/document/viewdoc/?id=1547