我的ActiveX的一个属性是文件的URL路径,在htm文件中给控件传文件的相对路径。
我的ActiveX控件在HTML中以下面的方法传入该属性(某文件的相对路径)
<OBJECT classid="clsid:568DC60B-F884-4147-8610-8C348AAFA2F8" width="100%" height="100%"> 
  <PARAM NAME="DataFile" VALUE="../data.xml"> 
</OBJECT>但是我的ActiveX中接受到的是"../data.xml"字符串,通过这个字符串,我无法定位该文件啊。我如何能像Flash那样,做到这点呢?
<OBJECT CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH="776" HEIGHT="586"> 
  <PARAM NAME=movie VALUE="../../../sample/flash.swf"> 
  <PARAM NAME=play VALUE=true> 
</OBJECT> 

解决方案 »

  1.   

    <PARAM NAME=movie VALUE=<% server.mappath("../../../sample/flash.swf") %> 
      

  2.   

    楼上已经说了
    也可以获取调用activex的网址,然后计算绝对路径
      

  3.   

    问题是,我想要在ActiveX内部获取调用activex的网址,然后计算绝对路径,不是想通过ASP生成一个全路径传给我。
      

  4.   

    你要获取调用的网址可以通过下面的方法(不需要做成BHO):
    BSTR CxxxCtrl::GetUrl() 
    {
    try
    {
    CComPtr <IOleClientSite> spClientSite; 

    spClientSite = this->GetClientSite();
    if (spClientSite == NULL)
    {
    return NULL;
    } CComPtr <IOleContainer> spCont;  spClientSite->GetContainer(&spCont);
    if (spCont == NULL)
    {
    return NULL;
    } IServiceProvider *pISP; spCont->QueryInterface (IID_IServiceProvider,(void**)&pISP);
    if(pISP == NULL)       
    {
    return  NULL;       
    } CComQIPtr<IWebBrowser2> m_WebBrowser2; pISP-> QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&m_WebBrowser2);

    if (m_WebBrowser2 == NULL)
    {
    return NULL;
    } LPOLESTR lpURL = NULL; m_WebBrowser2->get_LocationURL(&lpURL);
    ...就是这个了
    }
      

  5.   

    你可以通过下面的代码
    char *strurl;
    CComVariant varURL(lpURL);
    varURL.ChangeType(VT_BSTR);
    USES_CONVERSION;
    strurl = OLE2A(varURL.bstrVal);转换为char *的URL
      

  6.   

    太感谢 hoboo 了,全分奉上。我之所以这样,是希望我的ActiveX能识别相对路径,这样产品看起来,更专业啊。