WebBrowser是一个简单的浏览器,我们可以通过它完成很多关于网页的操作。 在Delphi中,需要引用ShDocVw和MsHtml,下面会逐渐介绍一些使用办法 创建WebBrowser WebBrowser := TWebBrowser.Create(nil); WebBrowser.ParentWindow := Self.Handle; WebBrowser.Silent := true; //不会因为网页错误弹出对话框 WebBrowser.OnBeforeNavigate2 := OnNewWindow; //可屏蔽不相关的网页
打开某个页面
procedure OnNewWindow(...); begin cancel := Pos('http://www.zixunwang.biz:8080/', URL) = 0; //屏蔽不相关的网页,在这里会屏蔽http://www.zixunwang.biz:8080/以外的网页 end;
procedure OnComplete(...); begin if url = 'http://www.zixunwang.biz:8080/login.aspx' then LoginProcess(); if pos('default.aspx', url) <> 0 then defaultProcess(); end; 有的时候,我们想获取网页中的元素的信息,或是想设置网页中元素的信息,那么如下代码应该是你关心的了 以下的代码是演示设置信息,函数通过遍历网页中所有元素,将符合元素设置合适的值 procedure login; 问题1:'FSI-UserName'和'FSI-Password'是怎么得到的? 解答1:你可以通过查看网页原文件获得这些ID,这些ID都是唯一的 问题2:IHTMLInputElement是什么东西? 解答2:IHTMLInputElement是一个系统定义的接口,在网页中的所有元素,如button,textarea,select, frame,image等都定义有接口,选择合适的接口类型对网页元素进行转换,就可以得到该元素详细的值,具体请参看MSHTML中的定义或给我留言
有的网页内有frame或iframe,我们如何取到其中的信息?
//取得frame个数 function GetFrameCount: Integer; var Doc: IHTMLDocument2; begin Doc := WerBrowser.Document as IHTMLDocument2; Result := Doc.Frame.Length; end;
//取得第n个frame内容 function GetFrameDoc(n: Integer); var Doc: IHTMLDocument2; OleContainer: IOleContainer; begin Doc := WebBrowser.Document as IHTMLDocument2; end; 你说的都是在自己创建的WebBrowser中进行操作,能否在已经打开的浏览器中进行呢? 这个问题其实分2步,第1是找到你关注的浏览器窗口,第2是把这个窗口转换为IWebBrowser2
function getIEFromBrowser(URL: String): IWebBrowser2; var ShellWindow: IShellWindows; vi: OleVariant; ShellWindow := CoShellWindows.Create; exit; end; result := nil; end; |
WebBrowser的用法
最新推荐文章于 2019-07-21 23:01:41 发布
http://hi.baidu.com/pirateflag/blog/item/c1b898243a83212ed507422b.html
WebBrowser的用法
2008-06-18 11:22