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

转载 2012年02月01日 01:23:45

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

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^)/

相关文章推荐

WebBrowser组件和MSHTML 在Delphi中的使用

很多都是网上的,拿来学习下:O(∩_∩)O   由于项目需要,近来研究了一下WebBrowser组件和MSHTML 在Delphi中的使用,整理了一下这段时间研究的结果,写下来一是方便大家查阅,二也...

Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件

Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件         在FireMonkey iOS应用程序中使用WebBrowser   在iOS...

Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件

在FireMonkey iOS应用程序中使用WebBrowser   在iOS平台上,FireMonkey使用TWebBrowser组件来封装Web Browser。这篇文单讲述了如何在iOS上创...

extern及extern “C”用法 转自:http://www.cublog.cn/u/29619/showart_230148.html

extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字创意产品网 .它告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。1。对于extern变量来说,仅仅是一个变量的声明...
  • mm_lvw
  • mm_lvw
  • 2011年04月01日 22:05
  • 283

理解JavaScript的caller,callee,call,apply(转自:http://www.ijavascript.cn/jiaocheng/caller-callee-call-apply-464.html)

 文章挺好的,虽然我用的是jQuery,但感觉还是有些用的~~~首先想说说javascript中函数的隐含参数:argumentsArguments该对象代表正在执行的函数和调用它的函数的参数。[fu...
  • lslxdx
  • lslxdx
  • 2011年05月08日 21:29
  • 654

重学C++(2)——指向类成员的指针(转自:http://www.wangchao.net.cn/bbsdetail_73812.html)

class A   {    int _val;    int val();   };   int (A::*p_val) = &A::_val;   int ( A::*p_func )() = &...
  • lslxdx
  • lslxdx
  • 2011年10月16日 21:58
  • 642

Android中Uri的使用转自http://blog.sina.com.cn/s/blog_821e2bb10100spxv.html

1.Uri 通用资源标志符(Universal Resource Identifier, 简称"URI")。 Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都...

依赖倒置原则(DIP)转自:http://www.infoq.com/cn/articles/Implements-DIP-of-Web-Service

实现Web Service依赖倒置 作者 译者 王翔 发布于 2007年8月1日 下午10时49分 社区.NET主题设计,Web服务标签XML 问题的提出 作为面向对象设计的一...
  • wyh0318
  • wyh0318
  • 2012年07月11日 10:17
  • 694

看板任务管理(转自http://www.infoq.com/cn/articles/hl-kanban-task-management)

作为一个开发团队的管理者,例如当你是一个团队的项目经理的时候,任务的完成情况通常是你最关心的内容之一,比如说分配的任务是否能够按时间完成,整个项目的进度是否尚在计划之中,团队内的人是不是都在高效地工作...

委托模式(转自:http://www.uml.org.cn/j2ee/200411036.htm)

委托模式透明 选择自 www.c-view.org 梗概委托是对一个类的功能进行扩展和复用的方法。它的做法是:写一个附加的类提供附加的功能,并使用原来的类的实例提供原有的功能。 场景扩展和复用一个类的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebBrowser组件和MSHTML 在Delphi中的使用---转自 http://www.hackpig.cn/post/294.html
举报原因:
原因补充:

(最多只允许输入30个字)