TCppWebBrowser 自动翻页老是出错,如何改
TCppWebBrowser 自动翻页老是出错,,怎么改啊
------解决方案--------------------
你需要等CppWebBrowser加载完网页以后再去获取IHTMLDocument2接口。建议加一句:
------解决方案--------------------
不需要那么复杂,有busy这一句就够了。
对于有些网页,其内容可能是通过延时脚本来加载,这样会影响到Busy属性不准确。
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属性不准确。