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

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

Delphi的类型转换 Delphi第三方控件大测评 Delphi多层应用程序的实现 Delphi技巧点滴 Delphi使用经验五则 Delphi使用心得 Delphi拖放编程(1) Delphi拖放编程(2) Delphi系列的Y2K问题 Delphi下编程实现中文输入 Delphi用于读写的三种文件类型 Delphi之三十六计之输入处理篇 DELPHI中DFM文件与文本文件转换 Delphi中用于读写的文件类型 RichEdit的自动格式化-Delphi资料 RichEdit中实现查找功能-Delphi资料 表格上所有元件载入后的事件-Delphi资料 充分利用Windows API扩展Delphi函数 传递焦点的五种方法-Delphi资料 从 实 例 看 Delphi 4 中 的 动 态 得到Memo中当前的行列号-Delphi资料 改变RichEdit的游标位置-Delphi资料 回车代替Tab移动输入焦点-Delphi资料 获取Windows临时路径-Delphi资料 获取当前鼠标位置的类名和句柄-Delphi资料 检测存在打印机-Delphi资料 将BMP文件转换为JPG文件-Delphi资料 类似链接的效果-Delphi资料 利用COM技术实现外壳扩展的属性页-Delphi资料 留意DELPHI的命名规则 判断元件有哪一特定的属性-Delphi资料 100分求各位水友认为值得浏览的网站~~ up有分 能不能同上宽带? 学c++ Builder 有前途?(散分) 为什么这个程序使cpu的使用率变成100%? 求教数组与表记录数据转换的问题! 管理软件方面的权限设置 为什么这个这个位图不能显示? 我MM摔伤了,希望她早日恢复!~~~~散分~~~~(一) 我MM摔伤了,希望她早日恢复!~~~~散分~~~~(二) 每次重启系统后,IE的默认页就被改成一个固定的网址。 我MM摔伤了,希望她早日恢复!~~~~散分~~~~(三) 我MM摔伤了,希望她早日恢复!~~~~散分~~~~(四) 紧急援助——莫名奇妙的关于编译后的EXE文件图标的问题 需求和方案方面的资料 C#写的windos桌面程序中调用delphi6写的dll正常,为何在阿asp.net中相同的方法调用出现问题呢? SQL语句的语法问题,高手请进!!! 有一套网上音像系统,寻开音像店共同合作 SUN的那份关于java所有的包的说明的文档在哪里可以下载呀? 怎么用电脑接听普通电话机打来的电话。 为什么读取图片后显示出错 请各位指教关于随即生成表格的问题!(急!!!!!) 格式问题:高分! 今天新买一台机器,xp1800+ 承启nforce2 +Kingmax333 256DDR +ST80G用起来一个字,爽! RichTextBox控件如何读取使用UTF8编码的文本文件? 程序编译到AfxWinMain就显示警告信息 建设一个一般的callcenter有10-20坐席,大概需多少钱呀 散分!!第一个程序在天空提交通过!! (帮我搞定,高分相赠,在线等待!)ASP上传图片到SQLServer,为什么老提示对象不支持appendchunkmydata方法? CheckBox可以同时传递多个值吗? 请问有用过visual interdev的,如何让interdev也像dreamweaver可以在写程序的时候显示代码在哪行的啊.多谢了 请高手帮忙解决我的问题,在此表示谢谢! 有关datagrid 和webform 的问题 程序员的艳遇。。。。。。 验证字符串问题 IE问题!好烦人啊!那位高手能帮我解答! 怎么在建表时使用一个时间函数??就是指出加这条这条文件的时间?? 高手请进,多数据库链接的问题 如何成为一个程序员? 事务以及回滚的问题 有做完一个作业,放60分。 关于ASP调用VC编的DLL接收返回参数的问题 我提问,大家回答 有没有关于触发器的电子书籍? 怎么能够获得数据库的连接字串呀?? 大讨论:目前用什么工具、做什么开发最能赚钱?散分啦!感兴趣的程序员们快来!! 在IE中,打开某个页面,会连接到www.lop.com页面 关于islower(ch),isdigit(ch) 疑问 BQQ的服务器端有没有保存用户的聊天记录的? 如何获得程序方向键输入?多谢! 蛇的寿命大概有多少年 (-1)的负二次是多少,怎么算的(-1)的负二次方是多少?怎么算的 英语翻译A design method for PID controllers based on the direct synthesis approach and specification of the desired closed-loop transfer function for disturbances is proposed.Analytical expressions for PID controllers are derived for several comm 蛇的寿命一般可以维持多少年?最多能活? 初中 语文,求学霸帮忙 who后加复数还是加单数 蛇的寿命是多久,目前知道活的最久的是多少年. 3负2次怎么算? Simulation studies of inverted pendulum based on PID controllers 求助这句怎么翻译,谢谢大哥大姐了 已知:a+b-3=0,且a、b互为倒数,则(a-b)^2= 2^2005×5^2006里面有几个零 32.In the event of SARS,some _____ it while others lost their courage to do anything about it.A.came up to \x05B.lived up to C.faced up to \x05D.caught up to 集合名词做主语是谓语动词用单数还是复数,个体名词做主语是谓语动词用单数还是复数 蛇的寿命? 【计算机英语】Some rules are scenario dependent while others are not,so it might be impor.Some rules are scenario dependent while others are not,so it might be important not only to be able to declare all rules directly in the class definition 什么是荧光性什么是物质的荧光性能?这个性能能说明什么问题呢? 他妈妈每天锻炼,所以身体很健康.his mother()every day,so she is()()().第一个空会,主要是第2个 鸟飞返故乡,狐死必首丘是谁说的 充电的荧光鞋可以湿水么? 有一个正方体木块,六个面上各写了一个三位数,其中5个数是876丶539丶170丶649丶235,第6个三位数与已知的的5个数中的每一个数都恰好有一个相同数位上的数字相同.问:第6个三位数是多少? 2.“鸟飞返故乡兮,狐死必首丘.信非吾罪而弃逐兮,何日夜而忘之!”屈原的 这首诗A,抒发了志在四方的英雄气概 B,抒发了忧国忧民的情感C,体现了张扬个性、蓬勃向上的时代精神 D,体现了超脱 we have bought some (ice cream) in the supermarket.(对划线部分提问) 蛇的寿命究竟是多少? 松鼠摘了9个松果,熊猫摘了6个松果,小松鼠摘了多少个?小松鼠摘的 个数是熊猫的 多少倍? 1.We bought some noodles in the supermarket,too(改为否定句)We bought ________ noodles in the supermarket,_________3.I could hardly work out the maths problem(改为反意疑问句)I could hardly work out the maths problem,_____ _______? 求人教版初中三年级数学重点+公式下载 The pen doesn’t work .I need to buy a new one to write_____The pendoesn’t work .I need to buy a new one to write_____A with Bin C on D /理由 质量为400千克的赛艇在水中航行时受到的阻力与速度成正比当赛艇以恒定牵引力由静止开始加速时,赛艇的速度达5m/s是加速度为4m/s^2.已知赛艇在这一恒定牵引力作用下所能达到的最大速度是1 什么动物看电视 组句,按需回答 swimming like do or running you (?) 《啄木鸟头部的防震装置》阅读答案 我语文92,英语96.我后面的一个女生是个学霸,她经常打击我,她还说她成绩差 audience用作单数还是复数? 一艘快艇以大小为2m/s平方的加速度在恒定力的作用下,做匀减速直线运动,快艇的初速度是6m/s,求快艇在8末的速度和8s内经过的位移 企鹅这种动物可以看电视吗 我是一只乱飞的鸟,也偶尔的投奔一下故乡的园林什么意思 啄木鸟的防震器阅读答案 女生,英语90,想在小升初前的一星期内平均分提高至95, 英文Gemini怎么读 奇迹荧光石怎么用 蛇的寿命究竟有多长?我见过很多蛇.确没见过老死的蛇.不管什么蛇.都没听说会老死.难道安们的生命是无限的? Gemini怎么读 I expect nothing less from you啥意思来着我怎么觉得是“我对你太满意了”的意思忘记了 要一篇 关于 渺小与伟大 的作文 要求800字 he is gone and you can go on with your story的同义句 this hell with it 伟大与渺小》的作文 go on with your story gemini什么意思 已知A,B互为负倒数(A小于B)且满足(C-5)^2+|A+B|=0,1.求A,B,C2.A,B.C 所对应的点分别为A.B.C ,点P为一动点,其对应的数为X,点P在0到2之间运动时(0≤X≤2时)请化简式子:|X+1|+|X-1|+2|X-5|(请写出化 蛇的生命有多长拜托各位了 3Q Gemini 怎么读 = =可以罗马音吗 = = 如果a-b-5=0,且a、b互为倒数,则(a+b)的平方是多少? How is your english getting on为什么用进行时.get on 荧光扇子的制作方法我们正排练一个舞蹈,需要用到会发光的扇子,我们把它称为荧光扇.哪位老师能指点一下,如何做出这种效果,或者告诉我哪里有这样的扇子卖?急,急,急…… 蛇的寿命一般能活多少年 2011 10 14 今天的《有道每日英语》Satire is a sort of glass,wherein beholders do generally discoverSatire is a sort of glass,wherein beholders do generally discover everybody's face their own.—Jonathan Swift讽刺是一面镜子,观看者 店铺做主语,到底是是为单数还是复数 悬赏分:20 | 离问题结束还有 14 天 15 小时 | 提问者:skyisskys 名词所有格之后的名词被省略,这种情况一般只指商店、工厂、住宅等,作主语时,动词一般用 蛇的寿命是多少年啊? 指数计算:(1+2的负1/8次)(1+2的负1/4次)(1+2的负1/2次)是指数与指数幂的运算, 英语翻译同上~这首不是大流行的即使知道要见面``但是我觉得更好听呢~ 日本赛马失控与轿车相撞当场丧生 司机美媒:部分美联储官员主张制定债券“退埃及再发军警遇袭事件 三名警察执勤时前三季度宁波灰霾天数达81天 复合污津巴布韦一架波音737客机引擎着火后外交部:联合国人权理事会通过中国接受日本新一代消防车设计图出炉 神似机动韩国军方网络司令部涉嫌干预大选 防长调查显示日本半数国民反对《特定秘密保澳洲85岁志愿者因慈善工作获得“默多埃及再发军警遇袭事件 三名警察执勤时日本赛马失控与轿车相撞当场丧生 司机希腊经济危机使国内中产阶级损失惨重(美国多名政客支持监听行为 称总统不必以色列耄耋作家展望巴以和平并存 遭官澳媒称澳政府拟摒弃前任政府对亚洲战略报告称全美国一年有500名少年儿童死阿根廷执政党保住国会最大党地位 但选加拿大婚外情网站欲进驻新加坡 遭民众印度拟射火星探测器 欲争亚洲第一被批美监管机构调查房地产信托投资基金广东:新农村示范点41套房9成有裂缝为贫困小学累计提供资助近20万元国际冠军杯强队频亮相沉睡的经典?长白山力推“四大产业”加快发展额……银行晚上“大敞四开”这是什么情“官员独董”离职潮银行卷帘门半夜“大敞四开”热心市民先兴奋:回家终于进入倒计时了感谢:要下《哨响shaoxiang误判再一再二再三 为啥总是延边?好协警做的事 同事都说“做不到”男子杀人潜逃21年 被抓后要求坐飞机到北湖参加啤酒节还能邂逅完美的TA长春暑期工调查“吉林友商联盟”昨日成立双色球2014084期:头奖6注73违反职业道德的教师 一经查实 严重者光想着救火 跑出时啥也没拿出来“浴都”加冕缺水城市谁之过?回迁楼上安广告牌 居民很犯愁
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘