DELPHI 中WEBBROWSER控件详解实例
DelphiWebbrowser使用方法详解(一)

DelphiWebbrowser使用方法详解(一)
1.webbroser介绍
该组件是一个浏览器组件,可以显示一个指定地址的网页、设置网页打开时的主页以及对网页进行相关的操作,同时也可以对HTML 文件进行剪切、复制、粘贴、删除等操作。
该组件在Internet组件页中,属于TWebbrowser类。
它放在程序当中,可以像操作网页一样操作webbrowser控件。
2.webbrowser有哪些应用
webbrowser目前大多数都是完成自动提交或定时处理某种操作,例如:
1.网页数据采集,从别人的论坛里面把帖子采集出来,放到我们的论坛里面,例如火车头采集器;
2.发帖,不断的到百度贴吧或者其他论坛去发帖也称灌水;
3.网购,例如淘宝上限时秒抢之类的;
4.投票,不断的变换IP去投票;
5.抢火车票,不断的刷新火车票,一有票就提示抢购;
6.开发浏览器,像原来的的360,腾讯,搜狗浏览器都是基于IE 内核开发出来的;
3.同类控件
1.Indy中的idhttp 特点不可见,使用麻烦,有阻塞,但效率高;
2.ICS跟idhttp差不多
3.TEmbeddedwb第三方控件,跟webbrowser差不多,功能更强大,缺点是没有相关使用说明或资料;
本人目前使用的就是TEmbeddedWB,主要是该控件屏蔽弹窗很牛逼,而且能截获弹出窗口的信息,不管是不是带不带框架的,后续的介绍也都是基于TEmbeddedWB展开,它和webbroser的使用方法都差不多,有区别的会特意注明。
搞了N久的Webbroser,今天终于有心情把它总结出来贡献给大
家,希望能帮助到那些使用webbrowser的人们,转载请注明出处,谢谢!未完待续。
用Delphi做简单的网页浏览器

用Delphi做简单的网页浏览器
1,在internet中找到webbrowers
2,拖到窗体上。
3,该组件常用方法有
begin
wb1.GoForward;//前进
end;
procedure TForm1.btn3Click(Sender:TObject);
begin
wb1.Stop;//停止
end;
procedure TForm1.btn4Click(Sender:TObject);
begin
wb1.Refresh;//刷新
end;
procedure TForm1.btn5Click(Sender:TObject);
begin
wb1.GoHome;//返回主页
edt1.Text:='about blank';
end;
procedure TForm1.tlb1Click(Sender:TObject);
begin
close;//退出
Navigate浏览
stop停goforward前进
这些都是访问网站常用的几个动作
4,设置界面
5,输入代码如下:
procedure TForm1.btn7Click(Sender:TObject);
begin
wb1.Navigate(edt1.Text);//浏览
end;
end;
procedure TForm1.btn1Click(Sender:TObject);
用TWebBrowser组件在DELPHI中POST数据和取得网页源文件

如果能够成功的连接返回 True,否则返回 False;
以下是一个判断当前计算机是否联网的例子:
procedure TForm1.Button1Click(Sender: TObject);
begin
if InternetCheckConnection('/', 1, 0) then
以下是一个判断当前计算机是否可以获得 Internet 服务的例子:
function TForm1.CheckOffline: boolean;
var
ConnectState: DWORD;
StateSize: DWORD;
begin
ConnectState:= 0;
end;
end.
< 2:WinInet函数相关 >
DWORD dwConnectState;
CString strConnectState;
BOOL bOK = InternetGetConnectedState( &dwConnectState, 0);
IN DWORD dwOption,
OUT LPVOID lpBuffer,
IN OUT LPDWORD lpdwBufferLength
);
参数的意义是:
hInternet:查询对象的 Internet 句柄(全局查询时为 nil),
dwOption:查询的项目;
PostStr:='Login.Token1=04538&Login.Token2=*******&Submit=%B5%C7+%C2%BC';
target:=NULL;
delphi WebBrowser控件实现对IE浏览器的各种控制

WebBrowser 控件实现对 IE 浏览器的各种控制
在不是 js 打开的页面上按 window.close(),会有提示框,很烦,现在可以不用了,没有提示框直 接关闭窗口。
试试下面代码:
<object
id="WebBrowser"
■属性■ <input name=Button onClick=document.all.WebBrowser.ExecWB(10,1) type=button value= 属 性 ><OBJECT classid=CLSID:8856F961_340A_11D0_A96B_00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT> ■打印■ <input name=Button onClick=document.all.WebBrowser.ExecWB(6,1) type=button value= 打 印 ><OBJECT classid=CLSID:8856F961_340A_11D0_A96B_00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT> ■页面设置■ <input name=Button onClick=document.all.WebBrowser.ExecWB(8,1) type=button value= 页 面 设 置 ><OBJECT classid=CLSID:8856F961_340A_11D0_A96B_00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT> ■刷新■ <input type=button value=刷新 name=refresh onclick="window.location.reload()"> ■导入收藏■ <input type="button" name="Button" value=" 导 入 收 藏 夹 " onClick=window.external.Impt; ■导出收藏■ <input type="button" name="Button3" value=" 导 出 收 藏 夹 " onClick=window.external.ImportExportFavorites(false,);> ■加入收藏■ <INPUT name=Button2 onclick="window.external.AddFavorite(location.href, document.title)" type=button value=加入收藏夹> ■整理收藏夹■ <INPUT name=Submit2 onclick="window.external.ShowBrowserUI(OrganizeFavorites, null)" type=button value=整理收藏夹> ■查看原文件■ <INPUT name=Button onclick=window.location = "view-source:" + window.location.href type=button value=查看源文件> ■语言设置■ <INPUT name=Button onclick="window.external.ShowBrowserUI(LanguageDialog, null)" type=button value=语言设置> ■前进■ <INPUT name=Submit onclick=history.go(1) type=submit value=前进> ■后退■ <INPUT name=Submit2 onclick=history.go(-1) type=submit value=后退>
Delphi实现HTMLWebBrowser实现HTML界面

Delphi实现HTMLWebBrowser实现HTML界面Delphi实现HTMLWebBrowser实现HTML界面HTML的界面有以下特点:图文混排,格式灵活,可以包含Flash、声音和视频等,实现图文声像的多媒体界面,而且易于建立和维护。
另外,HTML的显示环境一般机器上都具备,通常不需要安装额外的软件。
当然,HTML界面也有它欠缺的方面,即:界面控制能力有限,代码调试不便----虽然DHTML提供了比较强的编程特性,但是比起Delphi的传统的开发语言和工具来,对界面的控制能力,尤其是和数据交互时的控制能力还是稍逊一筹。
了解了这些特点,我们就可以在实际应用开发中,适时地选择HTML技术。
下面举个例子:一种仪器的管理程序,需要显示该仪器的操作方法文档,包含文字和图片,并要求可以隐藏或显示文档,并能安要求打印。
这个应用中,图文显示、隐藏/显示部分文档、图文打印等需求,都是HTML界面所擅长的,用传统的表单控件实现几乎无法想像。
用什么实现HTML的界面用Delphi实现HTML界面的应用主要有两种选择:WebBrowser Control或MSHTML。
为了弄清两者如何选择,我们先来看看Internet Exporer 4.0及其后续版本的体系结构:/workshop/graphics/IE4Arch.gif" width=305 border=0>IE浏览器是建立在SHDOCVW.DLL组件之上的,而SHDOCVW.DLL则建立在MSHTML.DLL组件之上,底层则包括脚本引擎等。
SHDOCVW.DLL提供了对活动文档(Active Document)的支持----例如Word等文档可以在IE中显示,并提供导航、in-place*连接、收藏夹、浏览历史和分级内容选择(PICS: Platform for Internet Content Selection)等功能。
SHDOCVW.DLL组件虽然也提供了很多接口可以单独使用,但是通常所指的SHDOCVW.DLL就是WebBrowser Control。
delphiWebBrowser的使用方法详解(五)

delphiWebBrowser的使用方法详解(五)/xtfnpgy/article/details/15809635网页代码:<SELECT id=fy onchange=TouchRefresh(1) name=fy> <OPTION selected value=15>每頁顯示15筆</OPTION> <OPTION value=30>每頁顯示30筆</OPTION> <OPTION value=60>每頁顯示60筆</OPTION></SELECT>1.webbrowser执行网页中的JS函数如果要执行T ouchRefresh(1)函数:webbrowser1.oleobject.document.parentwindow.ExecScript( 'TouchRefresh(1)’,'Javascript');webbrowser执行自己的JS函数:wb1.OleObject.document.parentwindow.ExecScript('alert(''自定义函数');','javascript');方法2:wb1.Navigate('javascript:alert(''执行成功!'');');2.webbrowser选择下拉列表varole : olevariantbeginole := webbrowser1.oleobject.document.GetElementByID('fy');ole.value := 60; //下拉框用value,复选框和多选框用checked:='true'ole.onchange; //调用onchange事件end;3.webbrowser按照Form提交(针对提交按钮无id和name的情况)网页代码:<FORM id=loginForm onsubmit="return validate_form()" method=post action=/pass/serviceLoginAuth2><INPUT id=passToken type=hidden name=passToken><INPUT style="DISPLAY: none" id=user class="input_kuang item errortip" name=user><INPUT style="DISPLAY: none" id=pwd class="input_kuang item errortip" value="" type=password name=pwd> <DIV class="sub_login flt_l"><INPUT class="no_bg" value=登入 type=submit></DIV>提交方法:webbrowser1.OleObject.document.forms.item('loginForm'). submit;4.webbrowser去掉滚动条在download事件中:webbrowser1.oleobject.Document.body.Scroll := 'no';webbrowser1.oleobject.Document.documentElement.style.o verflow := 'hidden';webbrowser控制滚动条滚动:webbrowser1.OleObject.document.parentwindow.scrollby(0, 100);//第一个参数横向,第二个竖向 scrollby滚动多少webbrowser1.OleObject.document.parentwindow.scrollto(0, 1000);// scrollto滚动到某个位置5.webbrowser屏蔽鼠标右键TEmbeddedWB设置DisabledPopupMenuItems属性webbrowser1.DisabledPopupMenuItems := [rcmDefault,rcmImage,rcmControl,rcmTable,rcmSelText,rcmAnch or,rcmUnKnown,rcmImageArt,rcmImgDynSrc,rcmDebug,rcmAll]6.webbrowser屏蔽网页图片TEmbeddedWB设置DownloadImages属性webbrowser1.DownloadOptions := [];7.webbrowser按照元素的属性获取元素function GetDocLinkByHref(doc : IHTMLDocument2;str_url:string):IHTMLAnchorElement;vari : Integer;label_iDispatch : iDispatch;label_element : IHTMLAnchorElement; //引用mshtmlbeginResult := nil;doc := webbrowser1.document as Ihtmldocument2;if not Assigned(doc) thenExit;for i:=0 to doc.links.length-1 dobeginlabel_iDispatch := doc.links.item(i,0);label_element := doc.links.item(I,0) as IHTMLAnchorElement;if (AnsiPos(str_url,(doc.links.item(I,0) as IHTMLElement).getAttribute('tag',0))>0)thenbeginResult := label_element;Break;end;end;end;8.webbrowser TEmbededwb屏蔽弹窗并捕获弹窗信息 //在 TEmbededwb的OnShowMessage事件中处理procedure TForm1.wb1NavigateComplete2(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);VARstr_url : string;beginWb1.OleObject.document.parentWindow.execScript('windo w.alert=null;','JavaScript');Wb1.OleObject.document.parentWindow.execScript('windo w.open=null;','JavaScript');Wb1.OleObject.document.parentWindow.execScript('windo w.close=null;','JavaScript');Wb1.OleObject.document.parentWindow.execScript('windo w.showModalDialog=null;','JavaScript');Wb1.OleObject.document.parentwindow.execscript('functio n confirm() {return true;}','Javascript');end;function TForm1.webbrowser1ShowMessage(Sender: TObject; HWND: Cardinal; lpstrText, lpstrCaption: PWideChar; dwType: Integer; lpstrHelpFile: PWideChar;dwHelpContext: Integer; var plResult: Integer): HRESULT;beginplResult := IDOK; //屏蔽alert\open\close等弹窗Result := S_OK; //屏蔽confirm确认框,并点击确认mmo1.Lines.Add(lpstrText); //lpstrText即为捕获到的弹窗内容end;屏蔽WebBrowser页面中的声音procedure CloseSound;varhWinmm: Cardinal;pwaveOutWrite: Pointer;lp: Cardinal;beginhWinmm := LoadLibrary('Winmm.dll');if hWinmm > 0 thenpwaveOutWrite := GetProcAddress(hWinmm, 'waveOutOpen');if pwaveOutWrite <> nil then beginVirtualProtect(pwaveOutWrite, 3, PAGE_EXECUTE_READWRITE, lp);Move(#C2#C2#18#$00, pwaveOutWrite^, 3);end;end;//强制Webbroser使用IE8内核 SetWBCoreIE8(8000);procedure SetWBCoreIE8(i_value:Integer);varstr_exeName : string;reg : TRegistry;begintrystr_exeName :=RightFromStr(Application.ExeName,'\',False);reg := TRegistry.Create;reg.RootKey := HKEY_LOCAL_MACHINE;if reg.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl', False) thenbeginif not reg.KeyExists('FEATURE_BROWSER_EMULATION') then reg.CreateKey('FEATURE_BROWSER_EMULATION');end;reg.CloseKey;if reg.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION ', False) thenbeginreg.WriteInteger(str_exeName,i_value);// if not reg.ValueExists(str_exeName) then// begin// reg.WriteInteger(str_exeName,i_value);// end;end;reg.CloseKey;reg.Free;exceptend;end;最后奉献以前收集的关于WB的文章链接:Delphi Webbrowserdelphi 模拟自动登录网页webbrowserdelphi webbrowser查找对象实现自动登录_delphi webbrowser与delphi互动WebBrowser组件和MSHTML 在Delphi中的使用Delphidelphi中Webbrowser - Max Woods - 博客园WebBrowser组件和MSHTML 在Delphi中的使用webbrowser轻松实现自动填表WebBrowser 操作记要 - 万一 - 博客园delphi中Webbrowser的使用技巧 - wystec的日志 - 网易博客delphi webbrowser 遍历网页元素Delphi7 Webbrowser制作网页表单自动提交器按步分析(1) - 中星9号 - 博客园delphi中如何在多线程环境下操作webbrowser控件delphi利用webservise登陆百度VB WebBrowser 为页面添加代码的方法_百度知道关闭webbrowser的弹出框(对话框Delphi中WebBrowser(或者EmbeddedWebBrowser)控件打开部分网站报“Invalid floating point operation”异常的解决方法- XuXn - 博客园Delphi中webbrowser的document 对象的属性方法事件_硬软兼得博客_新浪博客Delphi获取句柄并发送消息delphi WebBrowser获取iframe页面内容Twebbrowser如何写多线程? - Delphi _ 网络通信_分布式开发【发现】如何屏蔽掉WebBrowser在刷新网页等时候发出的声音- Boringlamb - 博客园对ExtendedWebBrowser的再扩展(续)_呼吸空间_百度空间接收IWebBrowser2的自动化事件_My_百度空间delphi WebBrowser 开发浏览器_SAP学习_abap_百度空间【转】WebBrowser的Cookie操作(与CookieContainer的关系)_奎宇工作室_百度空间蓝鸟-Delphi的WebBrowser改造,对网页中Alter等对话框的改造方法(转载)如何找到webbrowser打开网页中flash的接口?能否用这个接口控制flash的播放?_VC高级研究_积木群组webBrowser获取网页flash句柄模拟单击的问题- .NET技术_ C#VB 如何向 WebBrowser1 中的flash发送左边点击事件 - VB _ 网络编程用WebBrowser实现HTML界面的应用扩展WebBrowser 控件DragWebBrowser FlashGameWebBrowser_C# 视角_CS程序员之窗WebBrowser 设置代理(100分) - Delphi _ 网络通信_分布式开发屏蔽WebBrowser页面中传出来的声音 - jxgxy - 博客园可以对同一个程序中的多个WebBrowser设置不用的代理服务器吗?本地:双线路、双IP、双网卡设置上网_我是谁?—Andy Gu_百度空间Delphi中使用EmbeddedWB屏蔽指定内容的网页对话框- Patrick Pullman - 博客园Web Browser Control –Specifying the IE Version - Rick Strahl's Web LogWebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下? - BobLiu - 博客园WebBrowser 中,无法释放内存? - CSDN论坛 - 为什么浏览器会使用多进程架构。
delphi webbrowser 使用方法
delphi webbrowser 使用方法Delphi WebBrowser 使用方法Delphi WebBrowser是一种强大的组件,可以嵌入web页面到Delphi应用程序中。
本文将详细介绍使用Delphi WebBrowser的各种方法。
1. 安装和引用要使用Delphi WebBrowser,首先需要做以下几步操作:1.下载并安装Delphi WebBrowser组件包。
2.打开Delphi IDE,创建新项目或打开现有项目。
3.在项目中导入WebBrowser组件包(在IDE的”Component”菜单中选择”Install Packages”)。
2. 创建和显示WebBrowser使用Delphi WebBrowser,你可以轻松创建和显示一个WebBrowser窗口。
以下是一个简单的示例:procedure (Sender: TObject);beginWebBrowser1 := (Self);:= Self;:= alClient;('end;在上述示例中,我们使用Form的OnCreate事件创建了一个WebBrowser对象,并将其展示在一个窗口上。
属性Align设置为alClient,将WebBrowser充满整个窗口。
最后,通过调用Navigate 方法,我们使WebBrowser加载了指定的网址。
3. 与Web页面交互Delphi WebBrowser允许你与嵌入的Web页面进行交互。
以下是一些常用方法的示例:执行JavaScript代码你可以使用Delphi WebBrowser的方法来执行JavaScript代码并获取返回值。
以下示例演示了如何执行JavaScript代码并将结果显示在一个Label控件中:procedure (const ACode: string);varvJsResult: OleVariant;begin// Execute JavaScript code and get the resultvJsResult := (ACode, 'JavaScript');:= vJsResult;end;操作DOM元素要操作Web页面中的DOM元素,你可以使用Delphi WebBrowser 的方法来获取和修改元素的属性和内容。
Delphi 中WebBrowser控件详解实例
Delphi 中WebBrowser控件详解实例2008-10-18 下午 06:58很久都没有原创了,前几天帮朋友做了个网址发布程序,主要应用到了WebBrowser控件。
今天主要给大家演示一下过程,让大家学习一下Delphi工具。
WebBrowser功能:1。
自动加载网页2。
去除WebBrowser滚动条3。
WebBrowser自身打开页面4。
禁止右键1。
首先,新建一个FROM窗体:2。
加入一个WEBBROWSER控件3。
调整后如下:4.这样一个webbrowser就完成了,下一步我们来让程序打开后自动加载一个网页。
核心代码:WebBrowser1.Navigate('');双击窗体灰色处,对窗体进行初始化,在代码窗口中输入(Begin 与 End间输入核心代码):procedure TForm1.FormCreate(Sender: TObject);beginWebBrowser1.Navigate(''); //窗体初始化完成WEBBROWSER加载一个网页end;5。
下面我们来实现禁止WEBBROWSER控件的滚动条功能:核心代码:WebBrowser1.oleobject.Document.bod y.Scroll:= ‘no’;利用这个代码去掉滚动条的前提是webbrowser中必须有打开的网页,也就是在网页加载完完毕后再去掉滚动条。
所以首先要判断页面是否加载完毕,如果加载完毕,就执行上面的语句去掉滚动条。
这时就要引入一个按扭控件来触发程序加入SPEEDBUTTEN调整形后:好了,现在可以实现禁止滚动条的功能了:第一步:在WebBrowser1DocumentComplete事件中置一个标志tag:=1(代表加载完毕)单击WEBBROWSER控件,在WebBrowser属性的EVENS事件中找到WebBrowser1DocumentComplete (双击)然后在代码窗口中输入:procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);begintag:=1; //去掉Webbrowser1滚动条的标志end;对SpeedButten控件操作:(双击onClick)加入如下代码:procedure TForm1.SpeedButton1Click(Sender: TObject); varDoc: IHTMLDocument2;begintag := 0; //去掉Webbrowser1滚动条的标志WebBrowser1.Navigate2(’’);while(tag=0) do Application.ProcessMessages; WebBrowser1.oleobject.Document.body.Scroll := ‘no’; end;注意:使用前必须在uses中加入mshtml;这样WebBrowser就禁止了滚动条。
delphi的webbrowser如何访问网页中某个frame里的组件?
delphi的webbrowser如何访问网页中某个frame里的组件?先取出对应frame的document,再取想要的元素,给你我写的函数,新人是应该带着进门的……//框架获取functionGetDocument(Document:IHTMLDocument2;Index:integer):IHTM LDocument2;//框架获取var frame_dispatch:IDispatch;framed:IHTMLWindow2;ole_index:OleVariant;beginole_index:=Index;frame_dispatch:=Document.Frames.IT em(ole_index);if frame_dispatch <> nil thenbeginframed:=frame_dispatch as IHTMLWindow2;result:=framed.Document as IHTMLDocument2;endelsebeginresult:=nil;end;end;//点击指定位置或名称的链接,或者给指定的名称或序号的元素赋值procedureGetItem(Document:IHTMLDocument2;Index:String;IsClick:Boolean;State:integer;Value:string);var IDoc1: IHTMLDocument2;ielc: IHTMLElementCollection;ihtml:IHTMLElement;input:IHTMLInputElement;TextArea:IHTMLTextAreaElement;i:integer;beginDocument.QueryInterface(IHTMLDocument2,iDoc1);ielc:=idoc1.Get_all;if(trystrtoint(Index,i))thenbeginif(IsClick)thenbeginihtml:=ielc.item(strtoint(Index),0) as IHTMLElement;ihtml.click;endelsebegincase State of0 :begininput:=ielc.item(strtoint(Index),0) as IHTMLInputElement;input.value:=Value;end;1 :beginTextArea:=ielc.item(strtoint(Index),0) as IHTMLTextAreaElement;TextArea.value:=Value;end;end;end;endelsebeginif(IsClick)thenbeginihtml:=ielc.item(Index,0) as IHTMLElement;ihtml.click;endelsebegincase State of0 :begininput:=ielc.item(Index,0) as IHTMLInputElement; input.value:=Value;end;1 :beginTextArea:=ielc.item(Index,0) as IHTMLTextAreaElement; TextArea.value:=Value;end;end;end;end;end;这是我百度的技术博客,不懂可以去上边看,或者问……。
delphi中 TWebBrowser的各种用法 获得网页中变量值
注意:使用前必须在uses中加入mshtml;
==========================题外话 去掉滚动条后如何翻页呢用如下代码
var
Doc IHTMLDocument2;
begin
Doc =WebBrowser1.Document as IHTMLDocument2;
4.调用网页中已知对象
src = WebBrowser1.OleObject.Document.getElementByID('img1').src
该方法其实就是javascript中的 getElementByID
5.获取页面中所有的frame
使用DHTML。
背景图片 WebBrowser1.OleObject.Document.body.background = 'bg.gif'
背景颜色 WebBrowser1.OleObject.Document.body.bgcolor = '#eeeeee'
begin
tag = 0; 去掉Webbrowser1滚动条的标志
WebBrowser1.Navigate2(’’);
while (tag=0) do
Application.ProcessMessages;
WebBrowser1.oleobject.Document.body.Scroll = ‘no’;
ppdisp = webBrowser.Application;
end;
屏蔽WebBrower的右键菜单
放一个ApplicationEvents控件,在ApplicationEvents的事件OnMessage中设置如下代码: (ApplicationEvents控件在delphi中的additional选项卡上找)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Delphi中WebBrowser控件详解实例
2008-10-18下午06:58
很久都没有原创了,前几天帮朋友做了个网址发布程序,主要应用到了WebBrowser控件。
今天主要给大家演示一下过程,让大家学习一下Delphi工具。
WebBrowser功能:
1。
自动加载网页
2。
去除WebBrowser滚动条
3。
WebBrowser自身打开页面
4。
禁止右键
1。
首先,新建一个FROM窗体:
2。
加入一个WEBBROWSER控件
3。
调整后如下:
4.这样一个webbrowser就完成了,下一步我们来让程序打开后自动加载一个网页。
核心代码:WebBrowser1.Navigate('');
双击窗体灰色处,对窗体进行初始化,在代码窗口中输入(Begin与End间输入核心代码):
procedure TForm1.FormCreate(Sender:TObject);
begin
WebBrowser1.Navigate('');//窗体初始化完成WEBBROWSER加载一个网页end;
5。
下面我们来实现禁止WEBBROWSER控件的滚动条功能:
核心代码:WebBrowser1.oleobject.Document.body.Scroll:=‘no’;
利用这个代码去掉滚动条的前提是webbrowser中必须有打开的网页,也就是在网页加载完完毕后再去掉滚动条。
所以首先要判断页面是否加载完毕,如果加载完毕,就执行上面的语句
去掉滚动条。
这时就要引入一个按扭控件来触发程序
加入SPEEDBUTTEN
调整形后:
好了,现在可以实现禁止滚动条的功能了:
第一步:在WebBrowser1DocumentComplete事件中置一个标志tag:=1(代表加载完毕)单击WEBBROWSER控件,在WebBrowser属性
的EVENS事件中找到WebBrowser1DocumentComplete(双击)
然后在代码窗口中输入:
procedure TForm1.WebBrowser1DocumentComplete(Sender:TObject;
const pDisp:IDispatch;var URL:OleVariant);
begin
tag:=1;//去掉Webbrowser1滚动条的标志
end;
对SpeedButten控件操作:(双击onClick)
加入如下代码:
procedure TForm1.SpeedButton1Click(Sender:TObject);
var
Doc:IHTMLDocument2;
begin
tag:=0;//去掉Webbrowser1滚动条的标志
WebBrowser1.Navigate2(’’);
while(tag=0)do Application.ProcessMessages;
WebBrowser1.oleobject.Document.body.Scroll:=‘no’;
end;
注意:使用前必须在uses中加入mshtml;
这样WebBrowser就禁止了滚动条。
主要应用到了IHTMLDocument2。
6。
让Webbrowser中的链接点击时在自身窗口打开:(单击WebBrowser控件,属性中的EVENS事件,双击NewWindow2)
代码窗口中输入:
procedure TForm1.WebBrowser1NewWindow2(Sender:TObject;var ppDisp:IDispatch; var Cancel:WordBool);
begin
//將新視窗在自身開啟
ppdisp:=webBrowser1.Application;
end;
7。
最后是禁用WebBrowser中的右键功能,放一个ApplicationEvents控件:
ApplicationEvents控件属性Evens事件中双击Onmessage:在代码窗口中输入:
procedure TForm1.ApplicationEvents1Message(var Msg:tagMSG;
var Handled:Boolean);
begin
if(Msg.message=wm_rbuttondown)or(Msg.message=wm_rbuttonup)or (msg.message=WM_RBUTTONDBLCLK)then
begin
if IsChild(Webbrowser1.Handle,Msg.hwnd)then
Handled:=true;
end;
end;
到此完成对程序的制作,调试
去滚动条后:
--------------------------------------------------------
===================================
unit Unit1;
interface
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,StdCtrls,OleCtrls,SHDocVw,mshtml,AppEvnts;
type
TForm1=class(TForm)
WebBrowser1:TWebBrowser;
Button1:TButton;
ApplicationEvents1:TApplicationEvents;
procedure WebBrowser1DocumentComplete(Sender:TObject;
const pDisp:IDispatch;var URL:OleVariant);
procedure Button1Click(Sender:TObject);
procedure ApplicationEvents1Message(var Msg:tagMSG;
var Handled:Boolean);
private
{Private declarations}
public
{Public declarations}
end;
var
Form1:TForm1;
implementation
{$R*.dfm}
procedure TForm1.WebBrowser1DocumentComplete(Sender:TObject;
const pDisp:IDispatch;var URL:OleVariant);
begin
tag:=1;
end;
procedure TForm1.Button1Click(Sender:TObject);
var
a:IHTMLDocument2;
begin
tag:=0;
WebBrowser1.Navigate('');
while(tag=0)do Application.ProcessMessages;
WebBrowser1.oleobject.Document.body.Scroll:='no';
a:=WebBrowser1.Document as IHTMLDocument2;
a.Get_ParentWindow.ScrollBy(0,20);
end;
procedure TForm1.ApplicationEvents1Message(var Msg:tagMSG;
var Handled:Boolean);
begin
if(Msg.message=wm_rbuttondown)or(Msg.message=wm_rbuttonup)or (msg.message=WM_RBUTTONDBLCLK)then
begin
if IsChild(Webbrowser1.Handle,Msg.hwnd)then
Handled:=true;
end;
end; end.。