关于在WebBrowser2中自动点击链接的问题。
void*
CTester::OpenLink(
long nIndex
)
{
IHTMLDocument2*pDoc= NULL;
IHTMLElement*pItem= NULL;
IHTMLElement*pBody= NULL;
IHTMLElementCollection*pEC= NULL;
IDispatch*pDisp= NULL;
pDoc = GetDocument();
if ( pDoc == NULL )
return NULL;
pDoc-> get_body( &pBody );
pDoc-> Release();
if ( pBody == NULL )
return NULL;
pBody-> get_all( &pDisp );
pBody-> Release();
if ( pDisp == NULL )
return NULL;
pDisp-> QueryInterface( __uuidof( IHTMLElementCollection ), ( void** )&pEC );
pDisp-> Release();
if ( pEC == NULL )
return NULL;
pEC-> item( _variant_t( nIndex ), _variant_t( nIndex ), &pDisp );
pEC-> Release();
if ( pDisp == NULL )
return NULL;
pDisp-> QueryInterface( __uuidof( IHTMLElement ), ( void** ) &pItem );
pDisp-> Release();
if ( pItem == NULL )
return NULL;
pItem-> click(); /////////这句时发生异常
pItem-> Release();
return NULL;
}
[解决办法]
看看pItem的属性是不是你要的对象
[解决办法]
改成
<A class=a01 href= "javascript:turnpage( '2 ') "> 下一页 </A> 试试
[解决办法]
USES_CONVERSION ;
IHTMLElementCollection *pAnchors = NULL;
long ilHrefCount = 0;
if(SUCCEEDED(pElemColl-> get_length(&ilHrefCount)))
{
long ilHrefIndex = 0;
for(ilHrefIndex = 0; ilHrefIndex < ilHrefCount; ilHrefIndex++)
{
_variant_t vIndex;
vIndex.vt = VT_I4;
vIndex.lVal = ilHrefIndex;
IDispatch *pItem = NULL;
pElemColl-> item(vIndex, vIndex, &pItem);
if(pItem != NULL)
{
IHTMLAnchorElement *pAnchor = NULL;
if(SUCCEEDED(pItem-> QueryInterface(IID_IHTMLAnchorElement,
(LPVOID*)&pAnchor)))
{
BSTR bURL;
if( SUCCEEDED(pAnchor-> get_href(&bURL)))
{
string s = W2A(bURL);
if(s.find(url) != -1)
{
IHTMLElement * pElement = 0;
if(SUCCEEDED(pItem-> QueryInterface(IID_IHTMLElement,
(LPVOID*)&pElement)))
{
pElement-> click();
pElement-> Release();
}
}
}
pAnchor-> Release();
}
pItem-> Release();
}
}
}
[解决办法]
把你挣的钱分点我,赫赫。
[解决办法]
我和你做一样的事情,不过我已经解决了。
跨线程调用是有这个问题。