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

开发IE控件ActiveX(Delphi 打印控件     一直以来都觉得开发IE控件是一件非常难的事情,都是一些比较资深的程序员开发的,对于开发IE控件真的是觉得无从下手。     经过这几天的,查资料,问别人,瞎摸索终于做出了我的第一个IE控件--汽车电子客票打印控件。下面按照自己的步骤,记录一下,以免以后自己都忘了,我这里是用Delphi7开发的(学校的课程设计时学过,后来一直都没用过,手生得很),使用了FastReport报表打印控件(ht 阅读详情

 

 

        大概大家还记得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;
Delphi中代替WebBrowser控件的第三… http://blog.csdn.net/nanfeiyannan/article/details/7341492 这几天,接触到在delphi内嵌网页,用delphi7自带的TWebBrowser控件,显示的内容与本机IE8显示的不一样,但是跟装IE8之前的IE6显示一个效果。现在赶脚是下面两个原因中的一个: 1.Navigate这个方法用的有点问题,里面的参数不同及Navigate2等不同方 阅读详情

相关推荐

Delphi应用集成现代Web引擎:WebView4Delphi实战指南

在现代桌面应用开发中,将Web技术嵌入原生程序是常见的需求,这通常通过WebView组件实现。WebView的核心原理是提供一个浏览器渲染引擎的封装,允许应用内嵌显示网页内容,并实现原生代码与JavaScript的双向通信。其技术价值在于能够复用丰富的Web生态,同时保持原生应用的性能和系统集成能力。在Delphi开发领域,传统的TWebBrowser控件因基于老旧IE内核,对HTML5、CSS3和现代JavaScript框架支持不佳,已难以满足需求。为此,基于微软WebView2(Chromium内核)的

weixin_33404102的博客 310

Delphi嵌套IE网页

Delphi嵌套IE网页源代码,此实例是嵌套手机归属接口,可以在此程序上使用手机归属地查询

Delphi嵌入式浏览器控件EmbeddedWB:从IE内核到现代WebView的演进与实践

在桌面应用开发中,浏览器控件是实现原生应用与Web内容融合的关键技术组件。其核心原理是通过封装操作系统提供的浏览器渲染引擎(如IE的Trident),为应用程序提供内嵌的网页渲染与交互能力。这项技术的价值在于能够以较低成本扩展桌面应用的功能边界,实现动态内容展示、在线帮助、数据可视化等混合开发场景。随着Web技术的演进,从早期的IE内核到现代Chromium内核,浏览器控件经历了从兼容性适配到性能与标准支持全面提升的过程。本文聚焦于Delphi开发中的经典控件EmbeddedWB,深入探讨其多版本兼容性、I

chubaisheng8627的博客 424

Chrome浏览器控件Delphi

Chrome浏览器控件嵌入Delphi开发,开发属于自己的个性浏览器

Delphi开发嵌入式IE浏览器监控程序

随着网络的发展和普及,对网络的监控日益成为网络安全的必然要求,也是管理和维护网络的一个有效手段。当前已经有多种应用比较广泛的网络监控和过滤程序,如美萍网管、we-blocker等,它们都可以实现基于网络URL和IP地址的监控和过滤功能。  本文将对如何开发一个嵌入到IE浏览器中的监控程序进行介绍,该程序可以根据网络URL和IP地址进行监控和过滤,并且记录系统日志,从而使你对IE(当然是使用它的用户

桂林哈秋 - 我想学编程 1782

Delphi控件IE窗口打开网页

use comobj; procedure TForm1.btn1Click(Sender: TObject);  procedure OpenInIE(aURL: string);   //need uses ComObj;   var     IE: Variant;   begin     IE := CreateOleObject('InternetExplorer.Appli

shandiantianying的专栏 857

Delphi打开浏览器

Delphi打开浏览器

旭旭的博客 1238

DelphiIE浏览器打开网址链接的三种

简单点可以用默认浏览器打开,方法如下: uses shellapi procedure TForm1.Button2Click(Sender: TObject); begin ShellExecut(Application.Handle, nil,'http://iisnine.lofter.com', nil, nil, SW_SHOWNORMAL); end; IE打开网址链接的...

zisongjia的博客 1004

delphi 调用 chm文件、IE网页

一、调用 chm文件:   uses shellapi   ...   begin   ShellExecute(handle,nil,'indexsyy.chm',nil,nil,SW_SHOWNORMAL);   end;    二、调用IE网页: procedure TForm1.Button1Click(Sender: TObject); begin   //用IE打开   Shell...

josencom的博客 558

2015.1.25 Delphi打开网址链接的几种方法

Delphi打开网址链接的几种方法1、使用shellapi打开系统中默认的浏览器 首先需在头部引用shellapi单元即在uses中添加shellapi,这里我们需要知道有3个api函数可以运行可执行文件WinExec、ShellExecut和CreateProcess。 下面为ShellExecute的标准用法 ...

weixin_30892889的博客 124

WebBrowser控件实现对IE浏览器的各种控制

WebBrowser控件实现对IE浏览器的各种控制 在不是js打开的页面上按window.close(),会有提示框,很烦,现在可以不用了,没有提示框直接关闭窗口。 试试下面代码: 试着改变参数会得到其他一些功能: WebBrowser.ExecWB(1,1) 打开 WebBrowser.ExecWB(2,1) 关闭现在所有的IE窗口,并打开...

天天成长的博客 560

控件 组件 插件

控件就是具有用户界面的组件。

gumi123的专栏 483

Delphi应用程序注册DLL和ActiveX控件

delphi华表控件注册表 A popular feature of Delphiis the project deployment of an application with an executable file (exe). However, if the DLL or ActiveX controls in your project are not registered on the ...

cumao2792的博客 1115

Delphi中代替WebBrowser控件的第三方控件

这几天,接触到在delphi内嵌网页,用delphi7自带的TWebBrowser控件,显示的内容与本机IE8显示的不一样,但是跟装IE8之前的IE6显示一个效果。现在赶脚是下面两个原因中的一个: 1.Navigate这个方法用的有点问题,里面的参数不同及Navigate2等不同方法,调用的IE内核版本不同 2.这个自带的控件用着不爽,直接换一个第三方控件 对于第一点,找了半天冒...

ajv66295的博客 241
上一篇: Delphi下汉字输入法的编程及使用
猪仔庆
博客等级 码龄25年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值