void CTest1Dlg::GetElement()
{
HRESULT hr;
CComPtr<IDispatch>pDocDispatch = m_wndBrowser.GetDocument();
if(pDocDispatch.p != NULL)
{
CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2>pHTMLDocument2(pDocDispatch);
if(pHTMLDocument2.p != NULL)
{
CComPtr<IHTMLElementCollection>pAnchorElements;
//HRESULT hr = pHTMLDocument2->get_all(&pAnchorElements);
HRESULT hr = pHTMLDocument2->get_anchors(&pAnchorElements);
if(SUCCEEDED(hr))
{
long nNumElements;
hr = pAnchorElements->get_length(&nNumElements);
if(SUCCEEDED(hr) && nNumElements)
{
for(long i = 0; i < nNumElements; i++)
{
CComVariant varName(i);
varName.ChangeType(VT_UINT);
CComVariant varIndex;
CComPtr<IDispatch>pDisp;
hr = pAnchorElements->item(varName, varIndex, &pDisp);
if(SUCCEEDED(hr))
{
//CComQIPtr<IHTMLElement, &IID_IHTMLElement>pElement(pDisp);
CComQIPtr<IHTMLAnchorElement, &IID_IHTMLAnchorElement>pElement(pDisp);
if(pElement.p != NULL)
{
CComBSTR bstrHref;
hr = pElement->get_href(&bstrHref);
//pElement->get_tagName(&bstrHref);
}// if(pElement.p != NULL)
}// if(SUCCEEDED(hr))
}// for(long i = 0; i < nNumElements; i++)
}// if(SUCCEEDED(hr) && nNumElements)
}// if(SUCCEEDED(hr))
}// if(pHTMLDocument2.p != NULL)
}// if(pDocDispatch.p != NULL)
}
转载于:https://my.oschina.net/afxvivi/blog/1819277