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