- 浏览: 14069 次
最新评论
使用Webbrowser的一点心得体会
2009年06月29日
自从用上VS2008后,发现WebBrowser控件实在强大不少(.net 2003中不带),方便、实际、强大,有好多小工具就用这个写的,慢慢也有点体会了,总结一下,与网友们共享吧。
1、如何获得“打开网页出错”信息
在documentCompleted事件中,判断document.Url.AbsoluteUri中的"res://":标志即可(以前总用e.Url,怪不得总截取不到)
if (webBrowser1.document.Url.AbsoluteUri.IndexOf("res://") > -1) //出错处理
{
webBrowser1.Navigate(e.Url);
return;
}
2、如何使用IHTMLdocument2等MSHTML功能
VS2005中没有完全封装MSHTML中的功能,留了个Domdocument接口。直接引用Microsoft HTML Object Library类库后,就可以操作IHTMLdocument2等复杂的功能了。 如:IHTMLdocument2 doc2 = (IHTMLdocument2)webBrowser1.document.Domdocument;
3、如何提取网页中的图片,尤其是验证码图等以流方式返回的图片
很多网站一些图片是动态生成了,是从服务器计算4个代码,然后相对应一组序号,再以流方式发送到本地,然后GDI+绘画出来。不管是以什么方式,到了客户端,都是完整的。用WebBrowser的好处就在这里,只要管住最终结果就OK了。以下是得到网页上验证码的代码:
///
/// 返回指定WebBrowser中图片中的图内容
///
/// WebBrowser控件
/// IMG元素
/// IMG对象
代码:
private Image GetWebImage(WebBrowser WebCtl, HtmlElement ImgeTag)
{
HTMLdocument doc = (HTMLdocument)WebCtl.document.Domdocument;
HTMLBody body = (HTMLBody)doc.body;
IHTMLControlRange rang = (IHTMLControlRange)body.createControlRange();
IHTMLControlElement Img = (IHTMLControlElement)ImgeTag.DomElement; //图片地址
Image oldImage = Clipboard.GetImage();
rang.add(Img);
rang.execCommand("Copy", false, null); //拷贝到内存
Image numImage = Clipboard.GetImage(); //从 Clipboard中取图
Clipboard.SetImage(oldImage); //还原
return numImage;
}
VB.net2008代码为:
补充一下:
1、引用Microsoft HTML Object Library类库
2、添加一个WebBrowser控件、一个PictureBox控件
开始代码:
Imports mshtml
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.WebBrowser1.Navigate("http://ui.ptlogin2.qq.com/cgi-bin/login?link_target=blank&target=self&appid=8000108&hide_title_bar=1&s_url=http%3A%2F%2Fimgcache.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3fpara%3dizone&f_url=loginerroralert")
'呵呵,QQ空间的登录页面就是这么地长
End Sub
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
’WebBrowser1加载完后触发事件
PictureBox1.Image = GetWebImage(WebBrowser1)
End Sub
Private Function GetWebImage(ByVal WebCtl As WebBrowser) As Image
Dim doc As HTMLDocument = DirectCast(WebCtl.Document.DomDocument, HTMLDocument)
Dim body As HTMLBody = DirectCast(doc.body, HTMLBody)
Dim rang As IHTMLControlRange = DirectCast(body.createControlRange, IHTMLControlRange)
Dim ImgeTag As HtmlElement
For Each ImgeTag In WebBrowser1.Document.All
If ImgeTag.Id = "imgVerify" Then
Exit For
End If
Next
Dim Img As IHTMLControlElement = DirectCast(ImgeTag.DomElement, IHTMLControlElement)
Dim old As Object = Clipboard.GetDataObject
rang.add(Img)
rang.execCommand("Copy", False, Nothing)
Dim numImage As Image = Clipboard.GetImage
If (old Is Nothing) = False Then
Clipboard.SetDataObject(old)
End If
Return numImage
End Function
4、如何屏蔽掉Alert()类型的弹出窗口
首先申明这不是技术,只是一种处理的技巧。网上查了很多资料,对于网页中弹出Alert()窗口不好屏蔽(尤其是Writer出来的)。我的方法是做两个EXE,一个为主程序.exe,一个Run.exe。WebBrowser控件放在RUN.exe中,在主程序中通过Process调用RUN.exe,而用在执行完任务后,将RUN.exe杀掉(Kill),这时Alert窗口会自动关闭。我用这种技巧做了好了个投票机,可以安静的运行,还能回避Session处理等问题,也不会在桌面上留下一堆窗口。
发表评论
-
评论 (
2012-01-20 12:03 552评论 ( 2011年10月04日 初中英语教学予中考 ... -
安师大附中2012届高三第一
2012-01-20 12:03 744安师大附中2012届高三第 ... -
2012届高三语文每日一练
2012-01-20 12:03 11052012届高三语文每日一练 ... -
Button图片按钮
2012-01-19 16:53 796Button图片按钮 2011年11 ... -
VB中实现系统托盘图标实例
2012-01-19 16:53 1085VB中实现系统托盘图标实例 2011年04月19日 新建 ... -
SubClassWindow,SubClassDlgItem
2012-01-19 16:53 778SubClassWindow,SubClassDlgItem ... -
钩子程序解释说明都要注意小心钩子哦
2012-01-19 16:53 380钩子程序解释说明都要 ... -
windows消息机制
2012-01-19 16:53 511windows消息机制 2011年04月21日 一 W ... -
Do it
2012-01-17 06:36 569Do it 2011年12月10日 网站开发工程师 申请 ... -
汽车英语词汇 (2012了 大家抓紧学习)
2012-01-17 06:36 668汽车英语词汇 (2012了 大家抓紧学习) 2012年0 ... -
win7电脑配置
2012-01-17 06:36 964win7电脑配置 2011年12月30日 ------- ... -
AS3 编程易犯盲点――绝对对您有帮助,新手们都来看看吧
2012-01-17 06:35 644AS3 编程易犯盲点――绝对对您有帮助,新手们都来看看吧 2 ... -
使用 WebBrowser 控件如何防止某些网页强行最大化
2012-01-16 05:18 681使用 WebBrowser 控件如何防止某些网页强行最大化 ... -
webbrowser模拟确定窗口对话框
2012-01-16 05:18 1221webbrowser模拟确定窗口对 ... -
WebBrowser控件使用详解
2012-01-16 05:18 647WebBrowser控件使用详解 2010年09月29日 ... -
WebBrowser控件使用代理服务器(vb.net)
2012-01-16 05:18 1748WebBrowser控件使用代理服务器(vb.net) 20 ...
相关推荐
WebBrowser控件使用详解,WebBrowser控件使用详解
输入一个网址,通过WPF使用WebBrowser控件定时访问刷新网页
vc 使用 WebBrowser ActiveX 小demo
在WPF不规则窗体中使用WebBrowser 例子 在vs2010发现不存在System.Windows.Presentation.dll自己去下载了一个引用就OK了
使用webbrowser2控件做的浏览器
使用webBrowser采集网页数据,对一些需要登录,或有验证的,可以在webBrowser控件中手动登录或验证后,在开始批量采集
案例文档里面有使用教程——《基于MFC与第三方类CWebPage的百度地图API开发范例.pdf》,可依照教程步骤进行操作。源码在“GeoDemo”文件夹里面。
使用WebBrowser控件打印页面demo,通过修改demo中的几行代码就可以使用
在使用webBrowser时 有些office版本 会出现excel嵌不进去的情况,可以修改注册表来修复,不会影响其他的使用。。
vb6_Webbrowser控件使用技巧 1、获得浏览器信息: Private Sub Command1_Click() WebBrowser1.Navigate "http://www.applevb.com" End Sub Private Sub Command2_Click() Dim oWindow Dim oNav Set oWindow ...
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { this.webBrowser1.Navigate(Application.StartupPath + "/default.htm"); } Winform全屏: this....
C# webBrowser 使用Chrome内容案例
在WinForm程序中,webBrowser显示页面使用谷歌内核。避免了网页在WinForm中显示兼容性问题。
WebBrowser控件的功能在.NET 3.5 SP1中得到了增强。它不仅可以装入网页,也可与页面进行交互操作。Todd Miranda 演示了各项功能。
易语言使用WebBrowser2互联网浏览器第三方控件打开多个网页的例子
WebBrowser控件的详细使用和资源
Excel2007 VBA使用WebBrowser控件登录12306网站,推荐IE8,IE9也可以登录,但后继不能查询车票,是脑残的12306的问题。 程序涉及计时器、表单提交、页面加载完成判定、页面文字判断等多个方面。 代码来自网上若干人...
Delphi中WebBrowser的使用技巧汇总,对使用webbrowser开发很有帮助。
asp.net 使用WebBrowser控件浏览网页源码! 很值得下载看看!资源免费,大家分享!!