我在网页中内嵌了一个自己写的ActiveX控件,在该ActiveX中,需要下载一个数据文件,该数据文件是和页面文件位于同一目录中的。
  现在我用URLDownloadToFile,结果发现只能使用绝对路径,用相对路径时找不到文件。所以,我想获得ActiveX所在页面的URL,然后自己生成绝对路径。
  请问,我该怎么获得这个URL,或者这个页面的文档对象?谢谢。

解决方案 »

  1.   

    留出ACTIVEX接口,通过JS来得到URL然后传给ACTIVEX控件.
      

  2.   

    在OnSetClientSite里调用此方法
    CString CMyActiveXCtrl::getURL()
    {
    CString url="";
    IWebBrowser2 *browser = NULL;
    HRESULT hr = S_OK;
    IServiceProvider *isp, *isp2 = NULL;
    if (!m_pClientSite)
    {
    return "";
    }  
    else
    {
    hr = m_pClientSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&isp));
    if (FAILED(hr)) 
    {
    hr = S_OK;
    return url;
    }
    hr = isp->QueryService(SID_STopLevelBrowser, IID_IServiceProvider, reinterpret_cast<void **>(&isp2));
    if (FAILED(hr))
    {
    m_pClientSite->Release();
    hr = S_OK;
    return url;
    }
    hr = isp2->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2, reinterpret_cast<void **>(&browser));
    if (FAILED(hr)) 
    {
    m_pClientSite->Release();
    isp->Release();
    hr = S_OK;
    return url;
    }
    BSTR str;
    browser->get_LocationURL(&str);
    CString text(str);
    url=text;
    m_pClientSite->Release();
    isp->Release();
    isp2->Release();
    }
    return url;
    }