在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; } } */ } } } }