TCPPWebBrowser中document使用

http://dev.hackbase.com/hackbase10/how300178.htm

看看吧
void __fastcall TForm1::CppWebBrowser1DocumentComplete(TObject *Sender,
      LPDISPATCH pDisp, TVariant *URL)
{
//为了保证同步,应该把获取Document内容的代码放到OnDocumentComplete事件
IHTMLDocument2 *document;
IHTMLElement *body;
BSTR title,source,content;
(void *)document=CppWebBrowser1->Document;
document->get_title(&title); //取title
document->get_body(&body);
body->get_outerHTML(&source);//取源程序
body->get_outerText(&content);//取文本
Edit1->Text=title;
Edit2->Text=*URL;
Memo1->Text=source;
Memo2->Text=content;
}

    //获得IHTMLDocument2接口(这样似乎安全一点)
    hr = CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2,(v
oid**)&pDocument) ;
    if( !SUCCEEDED(hr) )
    {
        ShowMessage("hehe") ;
return ;
    }

    这个示例将列出
CppWebBrowser当前文件中所有的链接信息.标识为:<a href>...</a>
TCppWebBrowser类的Document属性是个IDispatch接口,利用该接口通过QueryInt
erface方法可以得到其他接口,如常用的IHTMLDocument2接口,然后通过各种接口
的方法可以达到对HTML文件的操作。
//首先判断控件是否已经下载HTML完毕
    if( CppWebBrowser1->ReadyState!=4)
    {
        ShowMessage("not Completed");
        return ;
    }
    IHTMLDocument2* pDocument ;
    IHTMLElementCollection* p ;
    IHTMLElement* link ;
    long len ;
    HRESULT hr ;
    //获得IHTMLDocument2接口
    hr = CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2,(v
oid**)&pDocument) ;
    if( !SUCCEEDED(hr) )
    {
        ShowMessage("hehe") ;
return ;
    }
    //得到Document中所有的Element
    pDocument->get_all(&p) ;
    pDocument->Release() ;
    p->get_length(&len) ;
    for(int i=0;i<len;i++)
    {
        IDispatch* pDisp ;
        Variant j ;
//得到Collection中的第i个Element
        p->item((Variant)i,j,&pDisp) ;
         hr= pDisp->QueryInterface(IID_IHTMLElement,(void**)&link) ;
if( !SUCCEEDED(hr) )
  return ;
        pDisp->Release() ;
        wchar_t* name ;
//提取tag属性
        link->get_tagName(&name) ;
        if( wcscmp(name,L"A")==0 )
        {
            VARIANT v ;
     //提取href属性
            link->getAttribute(L"HREF",0,&v) ;
            wchar_t* va = v.bstrVal ;
            AnsiString str = (AnsiString)va ;
            ShowMessage(str) ;
        }
        link->Release() ;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值