首页 > 其他分享 >Delphi WebBrowser控件

Delphi WebBrowser控件

时间:2022-09-20 00:44:05浏览次数:72  
标签:WebBrowser1 控件 begin end Delphi 激发 WebBrowser

WebBrowser控件属性:
1、Application
如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDispatch)。如果在宿主对象中自动化对象无效,程序将返回WebBrowser控件的自动化对象
2、Parent
返回WebBrowser控件的父自动化对象,通常是一个容器,例如是宿主或IE窗口
3、Containe
返回WebBrowser控件容器的自动化对象。通常该值与Parent属性返回的值相同
4、Document
为活动的文档返回自动化对象。如果HTML当前正被显示在WebBrowser中,则Document属性提供对DHTML Object Model的访问途径
5、TopLevelContainer
返回一个Boolean值,表明IE是否是WebBrowser控件顶层容器,是就返回true
6、Type
返回已被WebBrowser控件加载的对象的类型。例如:如果加载.doc文件,就会返回Microsoft Word Document
7、Left
返回或设置WebBrowser控件窗口的内部左边与容器窗口左边的距离
8、Top
返回或设置WebBrowser控件窗口的内部左边与容器窗口顶边的距离
9、Width
返回或设置WebBrowser窗口的宽度,以像素为单位
10、Height
返回或设置WebBrowser窗口的高度,以像素为单位
11、LocationName
返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源是网页就是网页的标题;如果是文件或文件夹 ,就是文件或文件夹的名称
12、LocationURL
返回WebBrowser当前正在显示的资源的URL
13、Busy
返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回true就可以使用stop方法来撤销正在执行的访问操作<br/>

WebBrowser控件的事件:
1、BeforeNavigate2 导航发生前激发,刷新时不激发

2、CommandStateChange 当命令的激活状态改变时激发。它表明何时激活或关闭Back和Forward菜单项或按钮

3、DocumentComplete 当整个文档完成是激发,刷新页面不激发

4、DownloadBegin 当某项下载操作已经开始后激发,刷新也可激发此事件

5、DownloadComplete 当某项下载操作已经完成后激发,刷新也可激发此事件

6、 NavigateComplete2 导航完成后激发,刷新时不激发 NewWindow2 在创建新窗口以前激发

7、OnFullScreen 当FullScreen属性改变时激发。该事件采用VARIENT_BOOL的一个输入参数来指示IE是全屏显示方式(VARIENT_TRUE)还是普通显 示方式(VARIENT_FALSE)

8、OnMenuBar 改变MenuBar的属性时激发,标示参数是VARIENT_BOOL类型的。VARIANT_TRUE是可见,VARIANT_ FALSE是隐藏

9、OnQuit 无论是用户关闭浏览器还是开发者调用Quit方法,当IE退出时就会激发

10、 OnStatusBar 与OnMenuBar调用方法相同,标示状态栏是否可见。

11、 OnToolBar 调用方法同上,标示工具栏是否可见。

12、 OnVisible 控制窗口的可见或隐藏,也使用一个VARIENT_BOOL类型的参数

13、StatusTextChange 如果要改变状态栏中的文字,这个事件就会被激发,但它并不理会程序是否有状态栏

14、TitleChange 网页标题有效或改变时激发

例子程序

1、WebBrowser1.OleObject.document.all.item('btnName').click;//根据页面中按钮的名称执行其点击事件

2、WebBrowser1.OleObject.document.getElementByID('btnID').click;//根据按钮ID点击

3、WebBrowser1.OleObject.document.getElementsByTagName('input').item(0).click;//根据按钮索引点击

4、WebBrowser1.OleObject.document.all.item('userName').value:=userName;//修改文本框信息,也可用ID,同上

5、ShellExecute(0,'open','www.baidu.com',nil,nil,SW_SHOW);//为浏览器打开一个网页

WebBrowser控件的函数:
1、GoBack 相当于IE的”后退”按钮,使你在当前历史列表中后退一项

2、GoForward 相当于IE的”前进”按钮,使你在当前历史列表中前进一项

3、 GoHome 相当于IE的”主页”按钮,连接用户默认的主页

4、GoSearch 相当于IE的”搜索”按钮,连接用户默认的搜索页面

5、 Navigate 连接到指定的URL

6、Refresh 刷新当前页面

7、Refresh2 同上,只是可以指定刷新级别,所指定的刷新级别的值来自RefreshConstants枚举表,该表定义在ExDisp.h中,可以指定的不同值 如下: REFRESH_NORMAL 执行简单的刷新,不将HTTP pragma: no-cache头发送给服务器 REFRESH_IFEXPIRED 只有在网页过期后才进行简单的刷新 REFRESH_CONTINUE 仅作内部使用 REFRESH_COMPLETELY 将包含pragma: no-cache头的请求发送到服务器 <br><br/>

初始化和终止化 这几句话放在主窗口所有语句之后,“end.”之前(需引用ActiveX单元)。

Webbrower的显示和隐藏
WebBrowser1.Visible:=False;//这句是没有效果的
TWinControl(WebBrowser1).Visible:=False;

使用进度条查看浏览器状态

procedure TForm1.WebBrowser1ProgressChange(ASender: TObject; Progress,
ProgressMax: Integer);
begin
ProgressBar1.Max:=ProgressMax;
if Progress = -1then
//ProgressBar1.Visible:=false
else
begin
ProgressBar1.Position := Progress;
ProgressBar1.Visible := True;
end;
if ProgressBar1.Position = ProgressMax then
//ProgressBar1.Visible:=False;
1、去掉TWebBrowser的滚动条

方法1
uses MSHTML_TLB,MSHTML;
IHTMLBodyElementDisp(IHTMLDocument2(WebBrowser1.document).body).scroll:= 'no';

方法2
WebBrowser1.oleobject.Document.body.style.overflow:='hidden';
2、滚屏

uses MSHTML;
var
a: IHTMLDocument2;
x,y:Integer;
begin
y:=y+20; //加减进行上下滚动
a :=WebBrowser1.Document as IHTMLDocument2;
a.Get_ParentWindow.Scroll(x,y);
end;
3、去边框 边框去掉后 Webbrowser编辑时使用Enter换行无效 但可以使用Shift+Enter换行 Xe2有这个问题XE4正常

WebBrowser1.OleObject.Document.Body.style.border :='none';
WebBrowser1.OleObject.Document.Body.Style.margin := '0px';
4、禁止提示脚步错误

procedure TForm1.WebBrowser1NavigateComplete2(ASender: TObject;const pDisp: IDispatch;var URL: OleVariant);
begin
WebBrowser1.Silent := True;
end;
5、禁止弹出窗口

procedureTForm1.WebBrowser1NewWindow2(ASender: TObject;var ppDisp: IDispatch; varCancel: WordBool);
begin
Cancel := True;
end;
6、屏蔽右键菜单 先要添加ApplicationEvents1,指定其Message事件

//ApplicationEvents1.Event.OnMessage
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
with Msg do
begin
if not IsChild(WebBrowser1.Handle, hWnd) then
Exit;
Handled := (message = WM_RBUTTONDOWN) or (message= WM_RBUTTONUP) or (message= WM_CONTEXTMENU);
end;
end;
屏蔽右键菜单

//Here's the code to disable the context menu (the one a user gets when it right-clicks inside a TWebBrowser) for TWebBrowser in a Delphi application:


function MouseProc(nCode: Integer; wParam, lParam: Longint): LongInt; stdcall;
var
classbuf: array[0..255]of Char;
const
ie = 'Internet Explorer_Server';
begin
case nCode < 0 of
True:
Result := CallNextHookEx(MouseHook, nCode, wParam, lParam) ;
False:
case wParam of
WM_RBUTTONDOWN, WM_RBUTTONUP:
begin
GetClassName(PMOUSEHOOKSTRUCT(lParam)^.HWND, classbuf, SizeOf(classbuf)) ;
if lstrcmp(@classbuf[0], @ie[1])= 0 then
Result := HC_SKIP
else
Result := CallNextHookEx(MouseHook, nCode, wParam, lParam) ;
end
else
begin
Result := CallNextHookEx(MouseHook, nCode, wParam, lParam) ;
end;
end; //case wParam
end; //case nCode
end; (*MouseProc*)


//Form OnCreate
procedure TWebBrowserForm.FormCreate(Sender: TObject) ;
begin
MouseHook := SetWindowsHookEx(WH_MOUSE, MouseProc,0, GetCurrentThreadId()) ;
end;

//Form OnDestroy
procedure TWebBrowserForm.FormDestroy(Sender: TObject) ;
begin
if MouseHook <> 0 then UnHookWindowsHookEx(MouseHook) ;
end;


If you want to find more about Windows hooks, read the :An introduction to hook procedures
9、缩放网页

const
OLECMDID_OPTICAL_ZOOM = 63;
var
ZoomIn: OleVariant;
begin
ZoomIn := 10;
WebBrowser1.ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_DODEFAULT, ZoomIn);
end;
10、读取当前页面字体大小
 类似“字体”菜单上的从“最大”到“最小”五项(对应整数0~4,Largest等假设为五个菜单项的名字,Tag 属性分别设为0~4)

//读取当前页面字体大小
var
t: OleVariant;
Begin
WebBrowser1.ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,EmptyParam,t);
case t of
4: Caption :='最大';
3: Caption :='较大';
2: Caption :='中';
1: Caption :='较小';
0: Caption :='最小';
end;
end;

//设置页面字体大小 这句代码Delphi7不能编译通过 Delphi Xe2可以运行
WebBrowser1.ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,3);
11、添加到收藏夹 参考MFC的

const
CLSID_ShellUIHelper: TGUID = '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}';
procedure AddFavorite(Webbrowser:TWebBrowser);
var
ShellUIHelper: ISHellUIHelper;
url, title: Olevariant;
begin
Title := Webbrowser.LocationName;
Url := Webbrowser.LocationUrl;
if Url <>'' then
begin
ShellUIHelper := CreateComObject(CLSID_SHELLUIHELPER) as IShellUIHelper;
ShellUIHelper.AddFavorite(url, title);
end;
end;

————————————————
版权声明:本文为CSDN博主「zxm8513」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zxm8513/article/details/121390803

标签:WebBrowser1,控件,begin,end,Delphi,激发,WebBrowser
From: https://www.cnblogs.com/tang-delphi/p/16709676.html

相关文章

  • TEditWebBrowser 组件
    继承TWebBrowser组件编写的组件:TEditWebBrowser,改写了原Mouse、Keyboard事件和OnEnter、OnExit事件。改写了TWebBrowser的焦点设置获取方法。超强的Edit功能,完全替代TRichE......
  • delphi中WEBBrowser网页html相互调用(一)
    1、基本操作1.1、激活vardoc,url:Olevariant;beginurl:='about:blank';//或者一个有实际意义的urlWebBrowser1.Navigate2(url);//这样就激活了!end;1.2、写HTM......
  • Delphi 用程序实现自动的html操作
    unitUnit1; interface uses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,OleCtrls,SHDocVw,mshtml,StdCtrls,......
  • 使用 Buffered Paint API 绘制带有淡入淡出动画的控件
    使用BufferedPaintAPI绘制带有淡入淡出动画的控件发表于2011年10月23日 Windows窗体提供了许多机制来构建与操作系统风格相匹配的专业自定义UI控件;通过结......
  • 重新审视下拉控件
    发表于2012年3月21日不时返回并重新检查旧代码是个好主意。随着时间的推移,会有更多的知识和新的技巧;在我早期的两个自定义Windows窗体控件的情况下,这当然是正确的......
  • 具有分组功能的 ComboBox 控件
    发表于2010年6月24日 Windows窗体ComboBox控件是一个出色的用户界面组件,适用于您希望向用户呈现一组离散的选项或邀请他们输入任意字符串值的情况。它不会对可用......
  • Delphi WebBrowser完成网页自动登录
    订制一些WEB数据抓取项目时,会遇到需要先登录网站系统,这时候我们通常会做成由系统自动登录的方式。分析网页要完成这项功能,首先需要对项目的网页进行分析,找到关键数据项的......
  • Delphi实现HTMLWebBrowser实现HTML界面
    HTML的界面有以下特点:图文混排,格式灵活,可以包含Flash、声音和视频等,实现图文声像的多媒体界面,而且易于建立和维护。另外,HTML的显示环境一般机器上都具备,通常不需要安装额外......
  • Toolbar工具条控件style样式使用感受和用法分享
    Toolbar工具条不知道能不能代替plus做成大按钮样式.....它的style样式有好多种,下面记录下自己使用过程常规样式importwin.ui;importwin.ui.toolbar;/*DSG{{*/va......
  • delphi 解决SaveDialog保存文件时,因无后缀名产生的错误
    vardefaultPath:string;//这里可以设置为全局变量beginifSaveDialog1.ExecutethenbegindefaultPath:=SaveDialog1.FileName;//文件路径+文件名......