清查阅: MSDN::BHOs 主题

解决方案 »

  1.   


    1,得到当前王爷中的所有超连接,利用IHtmlDocument2#include <mshtml.h>void CMyHtmlView::OnAlllinks() 
    {
        IHTMLDocument2 *pDocument;
        LPDISPATCH disp;
        IHTMLElementCollection  *pConn;
        IHTMLAnchorElement *pElem;
    HRESULT hr;
    CString strLinks;
    long p,i;
    disp = GetHtmlDocument();
        hr = disp->QueryInterface(IID_IHTMLDocument2, (LPVOID *) &pDocument);
    disp->Release();
    if(FAILED(hr))
        {
            MessageBox("document error!");
            return;
        }

    hr = pDocument->get_links(&pConn);
        if(FAILED(hr))
        {
            MessageBox("links error!");
            return;
        }
    pConn->get_length(&p);


    BSTR bstr;
    for( i =0 ; i < p ; i++)
        {

    pConn->item(COleVariant(i),COleVariant((long)0),&disp);
    disp->QueryInterface(IID_IHTMLAnchorElement ,(LPVOID*)&pElem);
    pElem ->get_href(&bstr);
    strLinks+=bstr;
    strLinks+="\r\n";
    disp->Release();
        }


        
        AfxMessageBox(strLinks);  //临时用AfxMessageBox显示一下
        SysFreeString(bstr);
        pConn->Release();
    }
      

  2.   

    2,这个.........这样来。
    void CMyHtmlView::OpenNewLinks(CString url)
    {
    AfxGetApp()->m_pMainWnd->SendMessage(WM_COMMAND,(WPARAM)ID_FILE_NEW,(LPARAM)CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;;
    CMDIChildWnd *pChild;
    CReaderView *pView;
    pChild = (CMDIChildWnd *) pFrame->GetActiveFrame();
    pView = (CReaderView *) pChild->GetActiveView();
             pView ->Navigate2(url);
    }然后上面的OnAllLinks函数中
    稍微改改就成了    BSTR bstr;
        for( i =0 ; i < p ; i++)
        {
            
            pConn->item(COleVariant(i),COleVariant((long)0),&disp);
            disp->QueryInterface(IID_IHTMLAnchorElement ,(LPVOID*)&pElem);
            pElem ->get_href(&bstr);
            strLinks=bstr;
            OpenNewLinks(strLinks);        
            disp->Release();
        }
        
    这样就成了吧~
      

  3.   

    恩?什么意思?
    左上角的框架??遇到<frame.....>,这个....要先确定框架,然后Get框架的文档内容,然后依照上述方法打开。
      

  4.   

    确定框架么,你到edyang的主页找HtmlDoc这个例子,其中有处理frame的部分他主页的网址是http://263.csdn.net/edyang
      

  5.   

    http://263.csdn.net/edyang  
    网页进不去!好象不存在!
      

  6.   

    IHTMLDocument2* pDoc;
    LPDISPATCH disp;
    IHTMLFramesCollection2* pCol;
    disp = GetHtmlDocument();
    disp->QueryInterface(IID_IHTMLDocument2, (LPVOID *) &pDoc);
    disp->Release();    
    pCol = pDoc->frames;
    long l = pCol->length;
    if(l > 0)
       AfxMessageBox("there are frames");
    这样吧,我没试啊,我不大会COM
    拟这样试试把
      

  7.   

    可以得到frames,但frames下的item应该怎样调用?并得到一个frames元素?即使得到了又怎么用呢?