BHO问题
在Invoke中得到IWebBrowser2,如何通过这个接口得到他所在的IE窗口句柄 问题点数:0、回复次数:3Top
1 楼hzaca(ACA)回复于 2003-10-01 20:03:08 得分 0
up~Top
2 楼Onega(www.fruitfruit.com)回复于 2003-10-02 20:36:35 得分 0
http://www.experts-exchange.com/Programming/Programming_Languages/MFC/Q_10194639.html
void CYouActiveXCtrl::GoofWithIE()
{
IOleClientSite * pClientSite = GetClientSite();
if (pClientSite)
{
try
{
IServiceProviderPtr spSP((LPOLECLIENTSITE)pClientSite);
IWebBrowserPtr spWebBrowser;
spSP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&spWebBrowser);
IWebBrowserAppPtr spIEApp;
spIEApp = spWebBrowser;
HWND hwBrowserApp = (HWND)(spIEApp->HWND);
CRect browserClientRect(0, 0, 0, 0);
if (hwBrowserApp)
{
CWnd::FromHandle(hwBrowserApp)->GetClientRect(&browserClientRect);
}
IHTMLDocument2Ptr spDoc2 = spWebBrowser->GetDocument();
IHTMLWindow2Ptr spWdw2 = spDoc2->GetparentWindow();
IHTMLScreenPtr spScreen = spWdw2->Getscreen();
CString str;
str.Format( "Browser Info:\n\tWidth:%d\n\tHeight:%d\n"
"Browser Client Rect:\n\t(%d, %d), (%d, %d)\n"
"Screen Info:\n\tWidth:%d\n\tHeight:%d\n"
"Screen Avail Info:\n\tWidth:%d\n\tHeight:%d",
spWebBrowser->Width,
spWebBrowser->Height,
browserClientRect.TopLeft().x,
browserClientRect.TopLeft().y,
browserClientRect.BottomRight().x,
browserClientRect.BottomRight().y,
spScreen->width,
spScreen->height,
spScreen->availWidth,
spScreen->availHeight);
MessageBox(str);
}
catch (_com_error &ex)
{
_bstr_t bstrDescription(ex.Description());
_bstr_t bstrSource(ex.Source());
char szTemp[1024];
CString strSupport("Exception Occurred:");
wsprintf(szTemp, _T("\nCode = %08lx\n"), ex.Error());
strSupport += szTemp;
wsprintf(szTemp, _T("Code meaning = %s\n"), ex.ErrorMessage());
strSupport += szTemp;
wsprintf(szTemp, _T("Source = %S\n"), bstrSource);
strSupport += szTemp;
wsprintf(szTemp, _T("Description = %S\n"), bstrDescription);
strSupport += szTemp;
MessageBox(strSupport);
}
}
}
Top
3 楼kingzai(stevenzhu)回复于 2003-10-03 10:24:57 得分 0
IWebBrowser2::get_HWND Method
Top




