请教一下,点击网页上的链接点时在OnBeforeNavigate2中如何捕获链接点所对应的文字描述呢(附代码)
请问一下,点击网页上的链接点时在OnBeforeNavigate2中怎么捕获链接点所对应的文字描述呢(附代码)
请帮我看下,如何获取链接点的名称,包括图片,js,flash的。谢谢
void CStrongKioskView::OnBeforeNavigate2(LPDISPATCH pDisp,LPCTSTR lpszURL, DWORD /*nFlags*/,
LPCTSTR lpszTargetFrameName, BOOL baPostedData,
LPCTSTR /*lpszHeaders*/, BOOL* pbCancel)
{
LARGE_INTEGER liFinish;
LARGE_INTEGER liFreq;
BOOL bCanNew = FALSE;
TCITEM TabCtrlItem;
int nFilterType = -1;
CStrongKioskApp * app = (CStrongKioskApp *)AfxGetApp();
try{
//解析添加链接
IOleWindow *pOWin=NULL;
HWND hBWnd = NULL;
HRESULT hRes = m_pBrowserApp->QueryInterface(IID_IOleWindow, (void **)&pOWin);
if( SUCCEEDED(hRes) )
{
hRes = pOWin->GetWindow(&hBWnd);
if( SUCCEEDED(hRes) )
{
CWnd *pWnd = CWnd::FromHandle( hBWnd );
if( pWnd )
{
LPUNKNOWN lpUnknown;
LPUNKNOWN lpUnknownWB = NULL;
LPUNKNOWN lpUnknownDC = NULL;
lpUnknown = pWnd->GetControlUnknown();
ASSERT(lpUnknown);
if (lpUnknown)
{
hRes = lpUnknown->QueryInterface( IID_IUnknown, (LPVOID*)&lpUnknownWB );
ASSERT(SUCCEEDED(hRes));
if (FAILED(hRes))
return;
hRes = pDisp->QueryInterface(IID_IUnknown, (LPVOID*)&lpUnknownDC );
ASSERT(SUCCEEDED(hRes));
if ( SUCCEEDED(hRes) && lpUnknownWB == lpUnknownDC )
{
CString strUrl( lpszURL );
strUrl.MakeLower();
if( ( strUrl.Left(7) == "http://" ) || (strUrl.Left(8) == "https://") )
{
SaveUrl( lpszURL );
}
。。。。。。。。
}
CString CStrongKioskView::SaveUrl( const char *pUrl )
{
CString strInnerText, strInnerHtml, strGetUrl;
// strInnerText.Empty();
// strInnerHtml.Empty();
// strGetUrl.Empty();
LPDISPATCH pDisp;
IHTMLDocument2* pHTMLDoc=NULL;
IHTMLElement* pElem = NULL;
IHTMLElement* pElemParent = NULL;
try{
pDisp = GetHtmlDocument();
if(pDisp!=NULL)
{
if(SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc)))
{
if(pHTMLDoc!=NULL)
{
if(SUCCEEDED(pHTMLDoc->get_activeElement( &pElem) ) )
//CPoint point;
//GetCursorPos( &point );
//if( SUCCEEDED(pHTMLDoc->elementFromPoint( point.x, point.y, &pElem ) ) )
{
BSTR bstrSrc;
while(pElem)
{
pElem->get_tagName(&bstrSrc);
strInnerText = bstrSrc;
SysFreeString(bstrSrc);
if (strInnerText!="A")
{
pElem->get_parentElement(&pElemParent);
pElem->Release();
pElem = pElemParent;
}
else
{
pElem->get_innerText( &bstrSrc );
strInnerText=bstrSrc;
//AfxMessageBox( strInnerText );
SysFreeString(bstrSrc);
pElem->get_innerHTML( &bstrSrc );
strInnerHtml = bstrSrc;
//AfxMessageBox( strInnerHtml );
SysFreeString(bstrSrc);
//strTargetName=bstrSrc;
//pElem->get_className( &bstrSrc );
pElem->toString(&bstrSrc);
strGetUrl=bstrSrc;
SysFreeString(bstrSrc);
break;
}
}
}
}
}
}
}
catch(...)
{}
try
{
RELEASE(pElem)
RELEASE(pHTMLDoc)
RELEASE(pDisp)
请帮我看下,如何获取链接点的名称,包括图片,js,flash的。谢谢
void CStrongKioskView::OnBeforeNavigate2(LPDISPATCH pDisp,LPCTSTR lpszURL, DWORD /*nFlags*/,
LPCTSTR lpszTargetFrameName, BOOL baPostedData,
LPCTSTR /*lpszHeaders*/, BOOL* pbCancel)
{
LARGE_INTEGER liFinish;
LARGE_INTEGER liFreq;
BOOL bCanNew = FALSE;
TCITEM TabCtrlItem;
int nFilterType = -1;
CStrongKioskApp * app = (CStrongKioskApp *)AfxGetApp();
try{
//解析添加链接
IOleWindow *pOWin=NULL;
HWND hBWnd = NULL;
HRESULT hRes = m_pBrowserApp->QueryInterface(IID_IOleWindow, (void **)&pOWin);
if( SUCCEEDED(hRes) )
{
hRes = pOWin->GetWindow(&hBWnd);
if( SUCCEEDED(hRes) )
{
CWnd *pWnd = CWnd::FromHandle( hBWnd );
if( pWnd )
{
LPUNKNOWN lpUnknown;
LPUNKNOWN lpUnknownWB = NULL;
LPUNKNOWN lpUnknownDC = NULL;
lpUnknown = pWnd->GetControlUnknown();
ASSERT(lpUnknown);
if (lpUnknown)
{
hRes = lpUnknown->QueryInterface( IID_IUnknown, (LPVOID*)&lpUnknownWB );
ASSERT(SUCCEEDED(hRes));
if (FAILED(hRes))
return;
hRes = pDisp->QueryInterface(IID_IUnknown, (LPVOID*)&lpUnknownDC );
ASSERT(SUCCEEDED(hRes));
if ( SUCCEEDED(hRes) && lpUnknownWB == lpUnknownDC )
{
CString strUrl( lpszURL );
strUrl.MakeLower();
if( ( strUrl.Left(7) == "http://" ) || (strUrl.Left(8) == "https://") )
{
SaveUrl( lpszURL );
}
。。。。。。。。
}
CString CStrongKioskView::SaveUrl( const char *pUrl )
{
CString strInnerText, strInnerHtml, strGetUrl;
// strInnerText.Empty();
// strInnerHtml.Empty();
// strGetUrl.Empty();
LPDISPATCH pDisp;
IHTMLDocument2* pHTMLDoc=NULL;
IHTMLElement* pElem = NULL;
IHTMLElement* pElemParent = NULL;
try{
pDisp = GetHtmlDocument();
if(pDisp!=NULL)
{
if(SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc)))
{
if(pHTMLDoc!=NULL)
{
if(SUCCEEDED(pHTMLDoc->get_activeElement( &pElem) ) )
//CPoint point;
//GetCursorPos( &point );
//if( SUCCEEDED(pHTMLDoc->elementFromPoint( point.x, point.y, &pElem ) ) )
{
BSTR bstrSrc;
while(pElem)
{
pElem->get_tagName(&bstrSrc);
strInnerText = bstrSrc;
SysFreeString(bstrSrc);
if (strInnerText!="A")
{
pElem->get_parentElement(&pElemParent);
pElem->Release();
pElem = pElemParent;
}
else
{
pElem->get_innerText( &bstrSrc );
strInnerText=bstrSrc;
//AfxMessageBox( strInnerText );
SysFreeString(bstrSrc);
pElem->get_innerHTML( &bstrSrc );
strInnerHtml = bstrSrc;
//AfxMessageBox( strInnerHtml );
SysFreeString(bstrSrc);
//strTargetName=bstrSrc;
//pElem->get_className( &bstrSrc );
pElem->toString(&bstrSrc);
strGetUrl=bstrSrc;
SysFreeString(bstrSrc);
break;
}
}
}
}
}
}
}
catch(...)
{}
try
{
RELEASE(pElem)
RELEASE(pHTMLDoc)
RELEASE(pDisp)