首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

TCppWebBrowser 自动翻页老是出错,如何改

2013-06-25 
TCppWebBrowser 自动翻页老是出错,,怎么改啊bool __fastcall ExecutePage(TCppWebBrowser *p, String strF

TCppWebBrowser 自动翻页老是出错,,怎么改啊

bool __fastcall ExecutePage(TCppWebBrowser *p, String strFuncName, int page,String strLang=L"JavaScript")
{
bool bRet = false;
if(p==NULL) return bRet;
IHTMLDocument2 *spDoc = NULL;
HRESULT hr = p->Document->QueryInterface( ::IID_IHTMLDocument2, (void **)&spDoc);
if (SUCCEEDED(hr))
{
strFuncName =strFuncName+"("+IntToStr(page)+");";
if (spDoc)
{
IHTMLWindow2 *pWin;
HRESULT hr = spDoc->get_parentWindow(&pWin);
                        //-----------总是在这里出错,,该怎么弄啊?
if (SUCCEEDED(hr))
{
VARIANT vRet;
hr = pWin->execScript(strFuncName.w_str(), strLang.w_str(), &vRet);
pWin->Release();
bRet = SUCCEEDED(hr);
}
}
}
return bRet;
}

[解决办法]
你需要等CppWebBrowser加载完网页以后再去获取IHTMLDocument2接口。建议加一句:
bool __fastcall ExecutePage(TCppWebBrowser *p, String strFuncName, int page,String strLang=L"JavaScript")
{
    while (p->Busy)
        Application->ProcessMessages();
    ...
}

[解决办法]
不需要那么复杂,有busy这一句就够了。

对于有些网页,其内容可能是通过延时脚本来加载,这样会影响到Busy属性不准确。

热点排行