• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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','<form method="POST" action="">');

webbody.insertAdjacentHTML('beforeend','Password: ');

webbody.insertAdjacentHTML('beforeend','<input type="password" >');

webbody.insertAdjacentHTML('beforeend','<input type="submit" value="LOGIN" >');

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

webbody.insertAdjacentHTML('beforeend','</form>');

end;

 

 

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap