说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在Delphi程序中应用IE浏览器控件

HTML文档下载 WORD文档下载 PDF文档下载
在Delphi程序中应用IE浏览器控件

大概大家还记得Delphi的范例程序中的那个浏览器的例子吧。在那个例子中,利用控件THttp的属性和方法制作了一个浏览器。该例子用于理解THttp控件的使用方法,确实不错。但很少有人会用它作为一个真正的浏览器,原因很简单,功能太有限了,不支持Frame,不支持Script脚本语言,不能以本地文件方式查看HTML文件等等。大部分用户在使用IE或Navigator;我们程序员也乐意使用现成的浏览器,在需要使用浏览器时,就在程序中通过WinExec或CreateProcess等方法调用外部浏览器让用户使用。这种方法确实挺省事的,但总让笔者有点不甘心,把程序控制权让给其它外部程序总让自己很感到麻烦,尤其当应用软件的使用者的计算机使用水平不是很高时。如果能有一个浏览器控件,就可把浏览器嵌入到自己的程序中,那应该挺不错的。

如果你的软件的外部环境是WIN95+IE或WIN98(这样的软件使用率还很高的),那样在系统中就已经有了一个IE浏览器控件可以使用了,也许是你长时间没有发觉吧,别浪费资源了,拿来使用吧。当系统中已经安装了IE3.X或IE4.X时,IE浏览器控件已经注册到系统中了,请运行Regedit,用“编辑”菜单下的“查找”功能,查找“Shell.Explorer”键名,你会发现 IE控件已经作为ActiveX控件注册在系统中了,这样就我们可以在Delphi中使用该控件了。

一、 在Delphi中引入IE浏览器控件

由于IE浏览器控件需要提供显示功能才能使用,所以不能在程序中用CreateOleObject取得一个实例后直接使用其属性和方法,否则程序在运行时会引起错误;这时需要用Delphi中提供的 “Import ActiveX Control”功能,操作方法见下所述。

在“Components”菜单中,调用“Import ActiveX Control”功能,在Registered Controls (注册控件)列表中选择“Microsoft Internet Controls(Version1.1)”,下方的提示栏中显示出其路径为C:\PWin98\System\SHDOCVW.DLL,在Class Names(类型列表)中列出了可注册的三个控件: TWebBrowser_V1、TWebBrowser和TShellFolderViewOC,分别为IE3浏览器控件、IE4浏览器控件和 “Microsoft外壳文件夹查看路由器”控件。单击Install进行安装。安装完成后,在“ActiveX” 控件栏中,将增加三个控件,分别为TWebBrowser_V1、TWebBrowser和TShellFolderViewOC;在 Delphi的Imports目录下,将创建一个文件SHDocVw_TLB.PAS,其中有这三个控件的包装细节,当然含控件的属性和方法说明了,它可以作为我们使用控件的参考资料。

二、 在Delphi程序中使用IE浏览器控件

以TWebBrowser(IE4浏览器控件)为例子。

TWebBrowser的常见属性和方法主要有:

GoBack:方法,后退到上一个页面。

GoForward:方法,前进到下一个页面。

GoHome:方法,调用默认的主页页面,

该页面在IE的选项中设定。

GoSearch:方法,调用默认的搜索页面,

该页面在IE的选项中设定。

Navigate(const URL: WideString;

var Flags

TargetFrameName

PostData

Headers: OleVariant):方法,

调用指定页面,具体参数如下:

URL:指定页面的URL。Flags:

Word类型,作用还不清楚,可设为0。

TargetFrameName:WideString,

打开页面所在的Frame,为空字符串时在当前的

Frame中打开;TargetFrameName

指定的Frame存在时在Frame中打开;

TargetFrameName指定的Frame

不存在时则新建一个窗口打开,此时就相当

于调用外部的IE浏览器了。

PostData:boolean,是否允许发送数据。

Headers:WideString,

要发送的URL请求的头部数据。

Refresh:方法,刷新当前页面。

Stop:方法,停止调用或打开当前页面。

LocationName:属性(WideString),当前位置的名称。

LocationURL:属性(WideString),当前位置的URL。

Busy: 属性(Boolean),是否正忙。

Visible: 属性(Boolean),浏览器窗口是否可见。

(以下属性为在TWebBrowser新增,

TWebBrowser_V1中没有,其作用有待探索)

StatusBar: 属性(Boolean),是否显示状态栏。

StatusText: 属性(WideString),状态栏内容。

ToolBar: 属性(SYSINT),工具栏中的内容。

MenuBar: 属性(Boolean),是否显示菜单条。

FullScreen: 属性(Boolean),是否全屏显示。

Offline: 属性(Boolean),是否脱机浏览。

AddressBar: 属性(Boolean),是否显示地址栏。

TWebBrowser的常见事件主要有:

OnStatusTextChange = procedure

(Sender: TObject; const Text: WideString)

of object;

在状态栏提示信息变化时发生,参数Text为当前状态栏提示信息,我们可以根据该信息来更新我们自己的状态栏提示信息或处理其它的事务.

OnProgressChange = procedure(Sender: TObject; Progress

ProgressMax: Integer) of object;

在打开页面的进度变化时发生,参数Progress为当前进度,ProgressMax为总进度,我们可以根据这两个参数来更新我们自己的状态栏提示信息或处理其它的事务.

OnCommandStateChange = procedure(Sender: TObject; Command: Integer; Enable: WordBool) of object;

当执行新的命令时发生,Command为命令标识,Enable为是否允许执行该命令. OnTitleChange = procedure(Sender: TObject; const Text: WideString) of object;

在页面的标题发生变化时发生,Text为当前标题.

OnPropertyChange = procedure(Sender: TObject; const Property_: WideString) of object;

在页面的属性发生变化时发生,Property_为属性名称 OnDownloadComplete: TNotifyEvent

在下载页面完成后发生.

OnDownloadBegin: TNotifyEvent

在下载页面开始前发生.

三、 在Delphi程序中应用IE浏览器控件的两个例子

(1)制作自己的帮助系统

我们利用IE浏览器控件为用户制作了一个帮助系统,帮助文件由多个HTML文件组成,一个主题对应一个 HTML文件(Topic.HTM),每个主题下的项目对应HTML文件中的一个标签(#Item)。这样在我们的系统中,就不必再调用IE浏览器或WinHelp程序来为用户提供帮助了。相信大家知道HTML帮助文件与传统的HLP帮助文件相比的优势所在吧。

在下面例子中,演示了TWebBrowser(IE4浏览器控件)的Navigate方法的使用方法。请注意程序中的注释。(下面为程序的主要片段)。

{根据主题和项目调用帮助文件}

procedure ShowHelp

( HelpTopic

HelpItem : String );

var

TargetFrameName

PostData

Heads

Flags : OleVariant;

URL : widestring;

begin

TargetFrameName := '';{指定Frame的空字符串时

则在当前Frame中打开帮助文件}

PostData := false;{不发送数据}

Heads := '';{Header信息为空}

Flags := 0;{Flags设为0}

URL := HelpTopic + '.HTM#'+HelpItem;

{帮助信息的URL}

with formHelp.webbrowser do{在帮助窗口

中的IE浏览器控件中显示帮助信息}

begin

navigate(URL

Flags

TargetFrameName

PostData

Heads);{显示帮助信息}

end;

end;

(2)显示一个GIF动画

假如你还没有一个适合的动画显示控件,不妨试用一下下面方法.

procedure ShowGIF( GIFFileName : String );

var

TargetFrameName

PostData

Heads

Flags : OleVariant;

URL : widestring;

begin

TargetFrameName := '';{指定Frame的空字符串时

则在当前Frame中打开动画文件}

PostData := false;{不发送数据}

Heads := '';{Header信息为空}

Flags := 0;{Flags设为0}

URL := GIFFileName;

with formGIF.webbrowser do{在指定窗口中的

IE浏览器控件中显示动画}

begin

navigate(URL

Flags

TargetFrameName

PostData

Heads);{显示动画文件}

end;

end;

以上程序在PWIN98+Delphi3.0下调试通过。

IBM在京发布PureData 主打数据交易处理、操作分析 Intel发布Hadoop免费版 全力拓展生态圈 突出图片搜索:微软向测试人员开放Socl社交搜索 豌豆荚创始人:和巨头竞争,我们拼产品和技术 “互联网女皇”报告解读:智能电视大趋势 苹果扩大其北卡罗莱纳州燃料电池发电场规模 Oracle回收站使用全攻略 微软这次很诚实:IE真的糟透了 Facebook进军短信业务,挑战微信鼻祖WhatsApp 从菜鸟到专家的五步编程语言学习法 亚马逊企业文化:从书贩到云服务巨头的催化剂 明年Google I/O大会日程敲定 或发Android“酸橙派”? 绝境求生,WebOS寄望Android Facebook在移动路上走过的那些弯路 曙光聂华:推动数据融合 CloudStack Committer李学辉:2013年社区将爆发 继续霸权:美众院否决联合国掌控互联网 墨迹天气创始人金犁:巧用细分市场的力量 Windows 8的IE10在浏览器安全测试中独占鳌头 程序员如何做出“不难看”的设计 JDK6明年2月停止更新,甲骨文呼吁尽快升级至7 《时代》评选年度十大视频游戏,激战2居首 《时代》评选年度十大科技产品,iPhone 5居首 Loopjoy:让开发者在移动游戏里贩售真货 iPhone 5S真机照片泄露 明年初上市 Beeline:从“蓝精灵村庄”到“捉鬼敢死队” Windows Server 2012域服务的六大改进 如何编写出优美的JavaScript代码? Unity CEO:不会因赌博游戏谋取金钱利益 云领域:且看亚马逊、Rackspace、微软及谷歌四国争霸 十一位EMC高管读2013技术趋势 你准备好了吗? 用ReadProcessMemory()读 *.exe 映像中 .data 节内容??? 我只升级主扳、CPU、硬盘、光驱,如何升级?请告诉我! 如果只做oracle DBA,那学习 PL/SQL 是否熟悉一些就行,还是必须特别精 DOS程序和WINDOWS程序串口通信问题,各位帮帮忙! 高手请回答:VB多线程互斥信号问题 用c编写bbs 多线程与clientdataset 主扳、CPU、硬盘、光驱,升级方案大比拚!!!!! 一个极菜的问题:怎么确定文档的大小? zf925(天下哪来那么多高手),你的回答我以看见了,但你的帖子贴的不全,你的原代码的例子没有, 设备管理器里面断口显示的是端口COM1和COM2,但是我的调只解调器里面的断口却是COM3和COM4,到底怎么回事呢?? :哪位大侠有多媒体方面编程的经验?请帮忙查看一下,谢谢。 DELPHI有史以来最大的难题! 二级联动菜单怎么搞啊??各位大虾救急啊!!! 请赐教 如何建立mts與com,dcom,com+通信,其中每種方式有何不同之處? 有个有关j2ee应用服务器的问题,很困惑!(急,一定给分!) 学习c和c++学要学习汇编吗????? 我先试一 下 关于得到文件的名字? 用5行代码就让系统重起的帖子怎么找不着了?谁告诉我?加分了!! 素女经 如何修改SQL数据库表中的数据 在对话框里输出文字?不要控件!!不要static 控件 一个关于打印的怪问题! 如何将数据库通过JDBC接收并将字段关键字连成一棵树(每一分支最多64节点) 救急!!!!!!!小妹我遇到一点问题! 今年就业形势“大好”! ******* 马上就给分,所以给的少了点,大家别介意 ******** 大家给点意见 请关注一个初学者的问题?我学sql但是不知未来的发展趋势!? 图形数据窗口(line 星)点太大,如何缩小 救急!!!!小妹我遇到一点问题! 用bcb制作动态网页 数据窗口 Graph 类型 line 样式 如何学c语言? Delphi中如何获的其它应用程序中的内容? 显示颜色变成只有16色和2色? DWORD 参数传递的问题。 那里有播放AVI文件的程序?谢谢! 参数传递问题!!大侠帮帮我 请帮我修改一下源代码(delphi)请帮忙改一下,让它打印了不往里(数据库)存。 BIOS设置,用电脑是不是可以当闹钟呢? 五笔输入法忽然不能用了 救就我,为什么Frame的客户区变小了?关于切分窗口 怎样查找某一个目录下一个表是否存在? 请问有用过李阳疯狂英语的朋友吗?请说说到底怎么样? 我想向各位大侠请教一个问题? 如何屏蔽TEXTBOX的回车响应? 关于《各位学习编程的目的是什么》的总结 一辆洒水车每分钟行驶200米,洒水宽度是10米,洒水车行驶15分钟能洒多少公顷? 生活中有哪几种圆柱体.嗯,一共是有三种的,而且是常见的,麻烦你帮帮忙吧,我会记住你的大恩大德的. 怎么区分小麦和稻子 一辆洒水车,每分钟行驶200米,洒水宽度是10米,洒水车直行100分钟,能洒多少公顷的地面?合多少平方千米? 举例说说生活中哪些物体的形状是圆柱体的 一块圆柱体木块竖着切成四块,表面积增48平方厘米;横着切成三块,表面积增加50.24平方厘米;削成一个最大圆锥体,体积减少了多少立方厘米? 一辆洒水车每分钟行 驶200米、洒水的宽度是10米、洒水车行驶15分钟能洒水多少公顷? 是圆柱体的物体有哪些?举4例 小麦和大米有什么区别?为什么? 一辆洒水车,每分钟行驶200米,洒水的宽度是10米.洒水车行驶100分钟,能洒多少平方千米的地面? 如果一个圆柱体与一个圆锥体的底面积和体积分别相等,则圆柱体的高是圆锥体高的() 有一根圆柱体的木料,如果底面直径竖直平均分成四块,表面积增加144平方厘米.如果平均截成4个小圆柱体,表面积会增加169.56平方厘米,这根木料原来的体积是多少? 设全集U=Z,A=(x=2k,k属于z),B=(x=2k+1,k属于z),求cuA,cuB 已知i,j是是夹角60的单位向量,向量a=2i+j,b=-3i+2j,则向量a,b的夹角为? 将一个圆柱体沿上下底面的圆心切成4块,表面积增加48平方厘米,如果将圆样切成3个小圆柱体,表面积增加50.24求圆柱的表面积 设全集U={x|x=2k,k∈Z},集合A={x=4k,k∈Z},求CuA 设向量a=3i-2j+4k,b=i+j-2k 在a,b决定的平面上 求一个与a垂直的单位向量 经济 发展 .help help我对中国近代经济发展历史感兴趣.(1000字——) 设U=Z,A={x|x=2k,k∈Z}.B={x|x=2k+1,k∈Z},求CUA,CUB 已知向量a=-i+2j b=-3i+4j 求 |a-b|= 假如大气中没有灰尘,强烈的阳光将使人无法睁开眼睛,这是灰尘的什么作用 一左端受力偶M顺时针作用,那么它的挠曲线方程是怎样啊该受力物体是简支梁 若U=Z,A={x|x=2k,k∈Z},B={x|x=2k+1,k∈Z},则CuA= CuB=CuA等于多少 CuB等于多少 已知i.j是两个不共线向量,若AB=3i+2j,CB=i+入j,CD=-2i+3j,那么当实数入为何值时,A,B,D三点共线?解析:已知AB向量=3i+2j,CB向量=i+λj,CD=-2i+j,那么:向量BD=向量CD-向量CB=-2i+j - (i+λj)=-3i +(1-λ)j若A.B.D三点共 设A={x|x=2K,K∈Z} B={X|x=2K+1.K∈Z} C={X|4K+1,K属于Z} 又有a∈A b∈B是判断a+b与集合A B C 的关系. 判断题:圆锥体是特殊的圆柱体() i.j是两个不共线向量,已知AB向量=3i+2j,CB向量=i+λj,CD=-2i+j,若ABD三点共线,求实数λ的值. 集合A={x|x=2k,k∈Z},B={x|x=2k+1,k∈Z},C=(x|x=4k+1,k∈Z},又a∈A,b∈B,则(a+b)∈____?为什么? 已知全集U={1,2,3,4,5},集合A={x∈Z||x-3|<2},则集合CuA等于(2,3,4}B.{2,3,4}C.{1,5}D.{5}Z 小麦和水稻啥区别? 集合A=(x┃X=2K,K属于Z)与集合B=(X┃X=4K,K属于Z)的关系是什么呀? 已知集合U=R,集合A={x|y=(1-1/x)^1/2}则CuA等于_______? 稻子和麦子有什么不同 集合A={x丨x=2k,k∈Z},B={x|x=2k+1,k∈Z},C={x|x=4k+1,k∈Z}, 又a∈A,b∈B,则( )集合A={x丨x=2k,k∈Z},B={x|x=2k+1,k∈Z},C={x|x=4k+1,k∈Z}, 又a∈A,b∈B,则( ) A. a+b∈A B. a+b∈B C. a+b∈C D.a+b不属于A,B,C中的任 已知U=[12345],集合A=[x属于Z/|x-3|<2],则集合CuA等于什么? 把一个底面半径为5厘米、厚2厘米的圆柱形月饼沿直径切成4等份,表面积增加了多少平方厘米? 一个圆柱体的底面半径为r,侧面展开图是一个正方形,这个圆柱体的高是() 已知全集u={1 2 3 4 5 },集合a={1 2},b={2 3 4 },则b∩cuA等于已知全集u={1 2 3 4 5 },集合a={1 2},b={2 3 4 },则b∩cuA等于 a{2} b{3 4} c{1 4 5} d{2 3 4 5} 把一个半径是5CM 后2CM的月饼沿直径切成四等份,表面积增加多少?(附加理由和算式) 洒水车洒水的宽度是8米,每小时行40千米.它4小时洒水的地面为多少平方米?合多少公顷 生活中哪些物体是圆锥体?(要身边随手就能拿的) 把一个底面半径为5cm,厚2cm的圆柱形月饼沿直径切成四等分,表面积增加多少平方厘米?怎么算,为什么 设全集U=Z,A={x|x=2k,k设U=Z,A={x|x=2k,k∈Z},B={x|x=2k+1,k∈Z},求:CuA,CuB. 生活中有什么东西是圆锥体的?可以拿来上课用的.我想说的是随处可见的.我很难找到漏斗之类的东西 小麦和我们说的大米区别大吗 设集合A{x:x=2k,k属于Z},B={x:x=2k+1,k属于Z},C={x:x=4k+3,k属于Z}.若a属于A,b属于B,c属于C,试判断a平方+b平方+c平方与集合A,B,C的关系(冒号代表那个竖杠 生活中有哪些东西是圆锥体的? 将一个圆柱体木块截成2个小圆柱体,表面积增加了100.48平方厘米,问圆柱体木块的底面半径?(岩高切的) 1.若集合A={x/x=2k,k∈z },B={x/x=2k+1,k∈z},则A ∪B=?2.下列不能够表示偶数集的是:A.{x/x=2k,k∈Z} B.{偶数} C.{x/x=2n ,n∈N}D.{… ,-4 ,-2 ,0 ,2 ,4 ,…} 生活中哪些物品是圆锥体? 已知向量a=-i 3j,b=3i-3j,则a b的单位向量坐标是 一辆洒水车在路上洒水宽度是两米一小时洒水40千米.问两个小时洒水多少平方千米?合多少公倾? 已知a=3i-j-2k,b=i+2j-k,求a·b已知a=3i-j-2k,b=i+2j-k,求a·b及a×b 稻子和麦子有什么区别? 圆柱体的截面有哪些? 设a=3i-j-2k,b=i+2j-k,求 a·b及axb 一个圆柱体小木块 切成4块 表面积增加48平方厘米,横切3段表面积增加50.24平方厘米,现将它削成最大的圆锥体,体积减少多少?算式,数字的,快急 一辆洒水车,每分钟行驶200米,洒水的宽度是10米.洒水车行驶100分钟,能洒多少平方千米? 生活中的封闭圆柱体急 已知向量i,j是互相垂直的单位向量,a=3i-4j,a+b=4i-3j(1)求向量a,b的夹角的余弦值;(2)对非零向量p,q,如果存在不为零的常熟α,β,使αp+βq=0,那么称向量p,q是线性无关的,向量a,b是线性相关还是
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn