WebBrowser组件和MSHTML 在Delphi中的使用---转自 http://www.hackpig.cn/post/294.html


======================================================
注:本文源代码点此下载
======================================================

mshtml是微软公司的一个com组件,该组件封装了html语言中的所有元素及其属性,通过其提供的标准接口,可以访问指定网页的所有元素.

mshtml对象模型是由一些对象和集合组成的.处于根部的是html,描述了打开页面的1个窗口,包括一系列集合和对象。如frames集合,history,location,navigator,document,vi—sum,event对象等.其中描述呈现在客户窗口实际网页的是document对象。由一系列的属性、方法、对象和集合组成.其中all集合中包含网页中所有标记(tag)元素,其主要的方法和属性有:

(1)length(长度):即标记出现的个数,可以把标记的集合理解为从0开始的一维数组,其次序按照标记在网页位置排列;

(2)tags(标记):用于过滤出给定标记的集合,如doc.al1.tags(p)得到所有分段标记p;

(3)item(项目):用于选择集合中的某1个元素,如object.item(0)得到集合的第1个元素,而object.item(i)得到第i+1个元素.

此外,ihtmlelement也是个常用的集合对象,代表网页中指定标记的集合,通过这个集合对象,可以得到网页上特定标记的内容.ihtmlelement有4个主要属性:

(1)innertext:开始标记和结束标记之间的文本;

(2)innerhtml:开始标记和结束标记之间的文本和html;

(3)outertext:对象的文本;

(4)outerhtml:对象的文本和html.

注意:使用前加入单元mshtml

演示表单提交

procedure tform1.button1click(sender: tobject);

var

doc:ihtmldocument2;

input:olevariant;

userinputelement,pwdinputelement:ihtmlinputelement;

begin

doc:=webbrowser1.document as ihtmldocument2;

userinputelement:=(doc.all.item('user'(也就是网页中用户名控件的名字),0) as ihtmlinputelement);

userinputelement.value:=edit1.text;(也就是你要向网页输入的东西)

pwdinputelement:=(doc.all.item('password',0) as ihtmlinputelement);

pwdinputelement.value:=edit2.text;

input:=doc.all.item('submit',0);

input.click;

end;

当提交数据按钮没有name属性时,采用如下方法:

procedure tform1.button1click(sender: tobject);

var

doc:ihtmldocument2;

form:ithmlformelement;

userinputelement,pwdinputelement:ihtmlinputelement;

begin

doc:=webbrowser1.document as ihtmldocument2;

userinputelement:=(doc.all.item('user'(也就是网页中用户名控件的名字),0) as ihtmlinputelement);

userinputelement.value:=edit1.text;(也就是你要向网页输入的东西)

pwdinputelement:=(doc.all.item('password',0) as ihtmlinputelement);

pwdinputelement:=edit2.text;

form:=(doc.all.item('login_form',0) as ihtmlformelement):

form.submit;

end;

登录"按钮一般都是网页中默认的回车按钮,所以可以用上面代码来代替前面的点击按钮

读取某网页内容

在创建窗体的时候打开一网页

webbrowser1.navigate('http://www.baidu.com')

procedure tform1.button1click(sender: tobject);

begin

memo1.lines.add(ihtmldocument2(webbrowser1.document).body.outerhtml);

end;

这样一来memo1中显示www.baidu.com的html

利用webbrowser1控件浏览某txt中文件的内容,并以html形式来显示出来

在webbrowser1的控件中的ondocumentcomplete事件加入如下代码

procedure tform1.webbrowser1documentcomplete(sender: tobject;

const pdisp: idispatch; var url: olevariant);

var

webdoc:htmldocument ;

webbody:htmlbody;

begin

webdoc:=webbrowser1.document as htmldocument;

webbody:=webdoc.body as htmlbody;

webbody.insertadjacenthtml('beforeend','');

webbody.insertadjacenthtml('beforeend','password: ');

webbody.insertadjacenthtml('beforeend','');

webbody.insertadjacenthtml('beforeend','');

webbody.insertadjacenthtml('beforeend',' ');

webbody.insertadjacenthtml('beforeend','');

end;

读取的时候,webbrowser控件得要完整的打开某一网页,程序代码如下


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
阅读更多
个人分类: javaee
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭