我在一个MFC应用里使用 CHtmlView 作为视图,按计划任务浏览指定网站,抓取信息,结果发现内存只吃不吐,关闭程序才吐出来,晕死,请教解决办法。我在线程里传入视图指针,执行浏览网站动作 pView->Navigate2(_T(row[2]),NULL,NULL);
每访问一个网页,执行如下代码:
bool CZBReportView::GXYYQYGetUrl(BSTR tagName,BSTR attrValue,CStringList& list,CStringList& list2,int type)
{ // 按照指定元素,所有内容
g_pDispatch=GetHtmlDocument();
if (SUCCEEDED(g_pDispatch->QueryInterface(IID_IHTMLDocument3, (void **)&g_pHtmlDoc3))) // 获取 IHTMLDocument3
{
if (SUCCEEDED(g_pHtmlDoc3->getElementsByTagName(tagName, &g_pElementCollection))) // 获取 IHTMLElementCollection 指定的 元素集合
{
long lCount = 0;
g_pElementCollection->get_length(&lCount); // 获取 指定的 元素集合数量
for(long i = 0; i < lCount; i++)
{
CComVariant varName(i);varName.ChangeType(VT_UINT);
CComVariant varIndex;
if (SUCCEEDED(g_pElementCollection->item(varName, varIndex, &g_pDispatch2))) // 循环获取每个 指定的 元素
{
if (SUCCEEDED(g_pDispatch2->QueryInterface(IID_IHTMLElement, (void**)&g_pElemment))) // 获取每个 指定的 元素的 IHTMLElement 接口
{
if(type==1)
{ // 搜索classname
GetFromClassName2(attrValue,list,list2);
}
else
{ // 搜索attributevalue
GetFromAttributeName2(attrValue,list,list2);
}
if(g_pElemment!=NULL){g_pElemment->Release();g_pElemment=NULL;}
}
if(g_pDispatch2!=NULL){g_pDispatch2->Release();g_pDispatch2=NULL;}
}
}
if(g_pElementCollection!=NULL){g_pElementCollection->Release();g_pElementCollection=NULL;}
}
if(g_pHtmlDoc3!=NULL){g_pHtmlDoc3->Release();g_pHtmlDoc3=NULL;}
}
if(g_pDispatch!=NULL){g_pDispatch->Release();g_pDispatch=NULL;}
return g_bGetURL;
}