获取嵌入ActiveX控件的页面IWebBrowser2指针

来源:互联网 发布:mac输入法记忆 编辑:程序博客网 时间:2024/06/07 21:00

在ActiveX控件中获取顶级的页面IWebBrowser2指针


CComPtr<IOleClientSite> spClientSite;  hr = GetClientSite(&spClientSite);  if (SUCCEEDED(hr))  {    CComPtr<IServiceProvider> isp, isp2;    hr = spClientSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void**>(&isp));    if (SUCCEEDED(hr))    {      hr = isp->QueryService(SID_STopLevelBrowser, IID_IServiceProvider, reinterpret_cast<void**>(&isp2));      if (SUCCEEDED(hr))      {        CComPtr<IWebBrowser2> spBrowser;        hr = isp2->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2, reinterpret_cast<void**>(&spBrowser));        if (SUCCEEDED(hr))        {          CComBSTR bstrFullName;          hr = spBrowser ->get_Path( &bstrFullName );          PTCHAR lpNewVal = (PTCHAR)_com_util::ConvertBSTRToString(bstrFullName);          MessageBox( lpNewVal, "show", MB_OK );          /*         //--------获取控件所在页面的URL---------------------         CComBSTR bstrFullName;         hr = spBrowser ->get_LocationURL( &bstrFullName );         if (SUCCEEDED(hr))         {           CString strCurDir(bstrFullName);           strCurDir.Replace("%20"," ");           int nEndPos = strCurDir.ReverseFind('/');           if (nEndPos < 0){             nEndPos = strCurDir.ReverseFind('//');           }           int nStartPos = strCurDir.FindOneOf("file:///");           if( nStartPos < 0 ){             nStartPos = 0;           }else {             nStartPos=8;             nEndPos -= 7;           }           if (nBufLen >= nEndPos)           {             strCurDir = strCurDir.Mid(nStartPos, nEndPos);             strcpy (lpBuffer,strCurDir.GetBuffer(strCurDir.GetLength()));             return nEndPos;            }          }          */         }       }     }   }  


0 0
原创粉丝点击