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

在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下调试通过。

从NSA携谷歌、微软等9家名企监控用户行为看数据安全 【专访间】新科兰德创始人左磊:我们的“卖点”是“数据弹药” 甲骨文公司宣布推出最新Java EE 7 10款最佳CSS/jQuery开源图片说明 创业者应避免对投资者说的五句话 直接拿来用!最火的iOS开源项目(二) 西部数据Pat Wilkison:云计算市场是创新热点 猎豹浏览器发布手机版:PM谈开发理念 成为伟大开发者的“九步曲” 使用GPU构建更便宜的Google神经网络 Facebook与Yahoo!的“火花”:系统间实时数据流管理工具 视金钱如粪土?Yahoo!又要买了,梅姐的算盘是这样打的 MySQL手册不再遵循GPL协议:MySQL走向闭源前兆? 扁平化设计会扼杀人们的创造力吗? 又一巨头涉足移动视频分享领域:传雅虎欲收购短视频应用Qwiki 史上最牛:主要靠三消游戏IPO King也许会是第一家 乐视超级电视预约启动 1小时预约近1.4万台 王坚:未来一年阿里云会有很大变化 梁胜:开源并不是做好软件的唯一方式 如何为IE 10编写特定的样式 MySQL手册许可证更改乃是Bug惹得祸 开源世界高峰论坛首批演讲议题公布 测试工程师的心灵鸡汤:谦虚、不沉默、有危机感、不断努力 高德地图API“沿图有你,晒出你的LBS应用”活动拉开帷幕! 谁能找出Windows 8.1的安全漏洞,就将获得微软10万美元奖金! 【直击美国云计算】Facebook分享数据中心新网络架构Fabric 【直击美国云计算】OCP发起产业界的Maker运动 红帽刘长春:开源是推动云计算和大数据发展的重要力量 【直击美国云计算】出货量达x86的20多倍 ARM或将成为数据中心主角 孙小群:将SAP HANA打造为开放的PaaS平台 GitHub推出重大改进:强调速度、内容和交互性 紧急求救!!! 如何制作浮动面板? 给分的问题! 如何获得 mod_webapp.so 紧急求救 想知道各位WINDOWS下用什么SNIFFER? 对于网络上的第三方控件的看法 简单问题?JTable中的数据如何居中对齐,有没有直接的函数(不用自定义CellRenderer) 有关析构函数 请问一个小问题 关于ADO中ltBatchOptimisticr的FilterGroup的问题 两个星要到多少分才能升到三个星呀 请问有谁知道北京的成人教育大致的情况如何? 是VC编译器不符合ANSI C++,还是?? 我现在在写个程序!是关于证券方面的!可是如下的一个小问题如何解决?? ★★如何让excel的某行的值等于另一行的值乘以一个固定值(急问,在线等待)★★ @@@开学了,散分! 怎样构建一个LDAP服务器和怎样使用 用VFW采集时进行压缩的问题。求解 C# 在DW MX中如何进行层定位? 回复:機會不要錯過! 華強科技有限公司幫你成就軟件工程師的夢想! How to access SMB/CIFS from Sun workstation? 谁来拿分啊。我有一个问题自己解决了,但没有给分的对象。 问一个message Bean的问题,up有分 [EJB]HelloWorldBean正确编译配置和执行,但"HelloWorld"却不见了 寻C语言编程高手!现有一IP地址和网页、搜索栏关键词拦截程序需要编写,付酬!!! 如何让主界面变成三维的那种 寻C语言编程高手!现有一IP地址和网页、搜索栏关键词拦截程序需要编写,付酬!!! 用什么组件能得到网站上的末知大小的文件? 问一个简单的问题 还是有问题关于获得选中安钮的当前行,请进>> 请教简单问题,如何将菜单的一个选项隐藏。就是类似cb的将Visible=false的做法!! 连接ACCESS数据库的问题? 寻C语言编程高手!现有一IP地址和网页、搜索栏关键词拦截程序需要编写,付酬!!! 如何提取一个EXE文件的特征码??要高分者和高手进!!!!来者有分! j2ee配置问题,大家帮我看看,错误出在哪里?谢了! 如何在注册表中修改使得浏览的网页可以即时通过工具栏的“编辑”调用DW修改? "聊聊"网站是怎样建的?用拉什么技术,可以即使聊天? 类型转换,非常奇怪的问题。高手进来 搞纯C++的大虾请进 关于MDI Child窗口的一个问题? DOS6.22的下载及6.0源码 sql语句问题:怎样从表中选出字段值包含在一个变量字串的那条记录。100分!在线等待! 关于那个mesh绕自己中心(注意是自己中心)旋转的问题我还没有解决 抛砖引玉: 证券行业软件之数据库存储。 如果下面这个问题谁能解决,我跪下来拜他三下:在WIN2000里,通过更改注册表,以达到更改IE的页面设置(一定要能更改横向:orientation和 过程的问题!!! 一个非常难的问题---挑战这里所有的高手!(解决了,分数我可以追加到200) 用vc7时候怎么导入一张图片作资源?还有怎么添加popup菜单 有关取得一个Tree Control的一个Notify的问题! 劝诫人们学无止境,奋发努力的名句有那些 急~~寒假作业上的…… 小学五年的生活一晃而过,真是( ),( ) .(写两个表示时间易逝的成语)我即将参加六年级毕业统考了, 甲乙两个人同时从A、B两地相向而行,5分钟后两人相遇,相遇后两人继续前行,又经过15/4分钟,甲已超过B地20米,而乙离A地还有80米,A、B两地相距( )米.希望不要用二元一次方程等复杂方式解答. 人的一生要经历多少事情?几经挫折你才会得到你理想的爱人 事业 家庭 朋友 成功 小学生活一晃而过,真是 .(写一个表示时间易逝的成语)下学期我将参加六年级毕业统考了.看看今天糟糕的成1.小学生活一晃而过,真是 .(写一个表示时间易逝的成语)下学期我将参加六年级毕业 如何改进英语教学 人的一生会经历许多的事,我们不应该只看到伤痛,我们应该善于寻找幸福.人生多磨难,何以强求太多,顺其自然,你会发现生活并不可怕.破碎的心无法使其完好如初,但是可以重新拾起,用心呵护, 妈妈呀,妈妈 这是一篇阅读短文!认真阅读下面短文,完成下面的练习.妈妈呀,妈妈 “哎呀,我的小祖宗,别动别动,让我来做.”这话简直成了妈妈的口头禅了.我放学一进家,她便让我做作业,我干 如何珍惜粮食简短些 人生不幸之事犹如一把刀……“人生不幸之事犹如一把刀,它既可以为我们所用,也可以把我们割伤,这要看我们究竟抓住了刀刃,还是握住刀柄” A、人生难免有挫折B、挫折既有消极作用,也有 这种题目什么的最讨厌了,特别是阅读短文完成练习. 什么是数字PID位置型控制算法和增量型控制算法? 把一张纸对折再对折,重复下去,第43次纸的高度是地球大月球的距离.纸厚0.006CM.距离385000KM相信这个人的说法吗? 请详细说明,谢谢了哦 ! 我求你们了 呜呜~~~~~~~~~~~~~~~~~~~ 读短文,完成练习的题目,公鸡和狐狸狐狸见公鸡站在树上,它像想吃鸡,但自己又不会爬树.于是它说:“啊,公鸡,我告诉你一个好消息!”“什么好消息!”公鸡问.“哦,现在所有的动物都成为好 pid控制的算法 如果将一张纸裁成两等份,把裁成的两张纸摞起来.第43次后所有纸的高度便相当于地球到月球的距离.”请给一个合理的理由,并请告诉0.006的43次方是多少?一张纸的厚度为0.006cm地球距月球约3850 帮我起一个练舞蹈作文的题目 怎样用PID算法控制温度? 面对困难,我们应该说什么名言警句来激励他人? 请问小学英语适合利用英文歌曲进行教学吗? 甲、乙两数相加,结果为357.5,如果甲数的小数点向左移一位,就和乙数一样,那么乙数是( ). 初中第一节体育课到底会干什么啊啊?急 ph试纸哪有卖 100吨米等于多少千牛米?寻求达人 在那能买到PH值试纸 成都ph试纸哪里有卖? 汽车发动机功率和牛米的关系汽车发动机的大问题,功率和牛米的关系,都说看发动机的性能看功率和牛米,发动机的综合性能是功率越大牛米也越大,但如果 100KW-200NM和120KW-180NM,那个发动机更好 PH值试纸那里能买到? 哪里可以买到PH试纸,价钱如何? 《那一刻,我迈上了新台阶》作文的开头不要是这个:人生漫漫,每分每秒,我们都在台阶上攀登.每登上一层,我们就站得更高;每登上一层,我们就看得更远——台阶总是在我们的脚下延伸. 提高警惕的名言警句大哥, 茄子内涵是什么意思 建筑给排水图纸上出现一个箭头,箭头上标注1%, 挖土深度大于5m,按土体稳定理论计算后的边坡进行放坡.我们挖土是11米,应该放多长距离 根据提示补写名句.1.我寄愁心与明月,( ).2.( ),天涯共此时.3.疏影横斜水清浅,( ).4.纸上得来终觉浅,( ) .5.勿以恶小而为之,( ).6.千年扬州古运河,堪称一条诗歌之河,你是否在课内外 将一张厚度为0.05毫米的纸对折30次以后,猜一猜它能有多高?我是初中生,这是家作啊,快.要理由.后面的答案要带单位. 假如你是一个世纪老人,见证了罗布泊的百年沧桑,你将向人们诉说什么? 警惕名言如何提高个人警惕性? 等个茄子是什么意思? 假如你是一个世纪老人,见证了罗布泊的百年沧桑,你将会向人们诉说什么? 我工程采用条形基础,基础大放脚宽为1.5m,基槽深度为2.6m,采用放坡施工,边坡比1:1.我工程采用条形基础,基础大放脚宽为1.5m,基槽深度为2.6m,采用放坡施工,边坡比1:1,基础施工工作面为15cm,计 一个6位数,各个数位上的数字之和是17,则这个数是多少,最小是多少 穿越一个世纪,见证沧桑百年,刻画历史巨变,一个生命竟如此厚重.答对有奖什么时候出来的说得谁? 哪些地区以面食为主、 1.东北平原 2.江南水乡 3.华北平原 4.黄土高原只要一个最准确的啊 一个三位数,三个数位上的数的和是17,十位上的数比百位上的数打5,个位上的数是百位数发2倍,求这个三位数. 挖土方、地槽、地坑放坡起点深度、放坡系数、工作面如何确定? 1北方地区年平均降水量为()-()毫米,属于什么区.2人们把东北平原称为()黄土高原和华北平原称为() 初中地理教学视频我现在初三了,可是地理总是考的不好,我非常苦恼,我不知道该怎么办,请问我应该怎么学呢? 地球到月球的距离384公里,用一张长0.2毫米的纸,折多少次可以到达 哪里可以买到PH试纸 涉及的范围是否比较广呢? 一张纸约0.06厘米厚,将它对折43次,可能等于地球到月球的距离吗?为什么? 在哪里能够买到PH试纸只是一个小县城,别弄什么太高级的地方,没太多的条件,不过要一些普通的场所道还有!THANGK YOU! 如何提高初中地理教学成绩 告诫自己,如果现在不努力学习,以后就会后悔的精辟名言就是告诫自己要珍惜时间,好好学习,强调“不然以后会后悔”,要贴在桌子上告诫自己的,希望比较精辟的,不要那些常见的,因为常见的 哪儿可以买到pH试纸? 甲乙两个人同时从A、B两地相向而行,5分钟后两人相遇,相遇后两人继续前行,又经过4分之15分钟,甲已超过B地20米,而乙离A地还有80米,A、B两地相距( )米. 告诫人们学无止境,奋发努力的名言 在哪里能买到PH试纸 查成语什么日经济
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘