您的位置:首页 > 其它

how to get url and hostname and url text in one page

2008-10-01 11:25 651 查看
STDMETHODIMP CIEHlprObj::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,
DISPPARAMS* pDispParams, VARIANT* pvarResult,
EXCEPINFO* pExcepInfo, UINT* puArgErr)
{
try
{


if(dispidMember == DISPID_DOCUMENTCOMPLETE)
{
/
// m_spWebBrowser2->get_LocationURL(&bstrUrlName); ->

// MessageBox(NULL,"doc","xxxxxxx",MB_OK);
//get document and set document
// CComPtr<IHTMLElement> body;
int ncount=0;
CComPtr<IDispatch> spDispatch;
CComPtr<IHTMLElementCollection> pElementCol;
CComPtr<IHTMLAnchorElement> pLoct;

TCHAR HostName[2*MAX_PATH];
TCHAR HostDesc[2*MAX_PATH];

CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> pDoc2;
HRESULT hRes= m_spWebBrowser2->get_Document(&spDispatch);

IHTMLElement* ptext;


pDoc2 = spDispatch;
if(pDoc2!=NULL)
{
if (SUCCEEDED(pDoc2->get_links(&pElementCol)))
{
// AfxMessageBox("IHTMLElementCollection");
long p=0;
if(SUCCEEDED(pElementCol->get_length(&p)))
if(p!=0)
{


for(long i=0;i<=(p-1);i++)
{

CComBSTR String;
_variant_t index = i;
if(SUCCEEDED(pElementCol->item( index, index, &spDispatch)))
if(SUCCEEDED(spDispatch->QueryInterface( IID_IHTMLAnchorElement,(void **) &pLoct)))
//获得链接
pLoct->get_href(&String);
ZeroMemory(HostName,2*MAX_PATH);
lstrcpy(HostName,_bstr_t(String));
//获得链接的域名
pLoct->get_hostname(&String);
ZeroMemory(HostName,2*MAX_PATH);
lstrcpy(HostName,_bstr_t(String));
if(lstrlen(HostName))
{

//获得链接对应的文字
pLoct->QueryInterface(&ptext);
ptext->get_innerText(&String);
ZeroMemory(HostDesc,2*MAX_PATH);
lstrcpy(HostDesc,_bstr_t(String));


// MessageBox(NULL,HostName,HostName,MB_OK);
}
}
}
}

}



}// if(dispidMember == DISPID_DOCUMENTCOMPLETE)

}
catch (...)
{
}

return S_FALSE;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: