使用Webbrowser的一点心得体会
原文:使用Webbrowser的一点心得体会

自从用上VS2005后,发现多了个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、如何提取网页中的图片,尤其是验证码图等以流方式返回的图片
        很多网站一些图片是动态生成了,是从服务器以流方式一点点发过来再组装成图片的。不管是以什么方式,到了客户端,都是完整的。用WebBrowser的好处就在这里,只要管住最终结果就OK了。以下是得到网页上验证码的代码:

/// <summary>
        /// 返回指定WebBrowser中图片<IMG></IMG>中的图内容
        /// </summary>
        /// <param name="WebCtl">WebBrowser控件</param>
        /// <param name="ImgeTag">IMG元素</param>
        /// <returns>IMG对象</returns>
       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;
        }

4、如何屏蔽掉Alert()类型的弹出窗口
        首先申明这不是技术,只是一种处理的技巧。网上查了很多资料,对于网页中弹出Alert()窗口不好屏蔽(尤其是Writer出来的)。我的方法是做两个EXE,一个为主程序.exe,一个Run.exe。WebBrowser控件放在RUN.exe中,在主程序中通过Process调用RUN.exe,而用在执行完任务后,将RUN.exe杀掉(Kill),这时Alert窗口会自动关闭。我用这种技巧做了好了个投票机,可以安静的运行,还能回避Session处理等问题,也不会在桌面上留下一堆窗口。

posted on 2014-06-14 13:50 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3788222.html

使用Webbrowser的一点心得体会相关推荐

  1. java学不下去能学web安全吗,这半年学习 Web 安全的一点心得体会

    原标题:这半年学习 Web 安全的一点心得体会 来自公众号: 信安之路 大家好,我是 Mirror(王宇阳),专科在读的大二学生:接触信安时间不长,大佬多多指教.信安之路成长平台网站开放后我就在双十一 ...

  2. java听课心得体会,Java初步学习的一点心得体会

    从2015年9月份开始接触到java语言,一开始学习并不上心,而且一直在找自学资源,在没有大牛带的情况下,一直拖到2016年3月份,正式开启了我的java自学之路,现在的我还处在刚入门阶段,谈谈自己学 ...

  3. 计算机软件工程专业心得,非计算机专业学软件工程的一点心得体会

    非计算机专业学软件工程的一点心得体会 本人本科学习的是电子信息科学与技术,现在研究生阶段学习的是软件工程.应该说本科与计算机行业相关的话也就是学习了一点C语言的知识,以前学习的大部分是硬件的知识,现在 ...

  4. u盘装linux运行慢,从U盘安装Linux的一点心得体会

    前些天下载了一个UBUNTU8.04,一个Fedora9两个linux的安装镜像.不过手头上没有DVD刻录光驱,只有一个2G的U盘,主机bios 可以设置从usb启动.于是就想从U盘启动安装linux ...

  5. 计算机主机拆装实训心得,实验室拆装仪器的一点心得体会

    实验室拆装仪器的一点心得体会 实验室在搬迁的过程中,有时候需要拆仪器,如何拆,怎么拆是一个技术性问题!我本人有以下的心得体会,希望和大家进行分享! 第一步,把电脑拆除,电脑与仪器是通过电线连接起来的, ...

  6. 关于C语言项目的一点心得体会

    关于C语言项目的一点心得体会 作为一个C语言初学者,最近做了好几个C语言项目,也对编程有了更深层次地理解,其中也遇到了很多问题,今天我会记录一下自己经常犯的错和在项目中遇到的问题. 输入缓冲区问题 这 ...

  7. Matlab实践课心得体会,学习matlab的一点心得体会

    1.前言 2.matlab的一些特点 3.学习matlab心得体会 4.matlab的一些资源 1.前言 我接触Matlab的时间比较长了,最开始是在大学里面的数学实验课上了解了一些,学了些基础的命令 ...

  8. [原创]QQ农场外挂辅助制作一点心得体会1

    心得体会就是-腾讯真变态. 如果是9月前,可能我辅助做好了,因为9月后腾讯改了个别操作的地址,偷菜的地址就改了,加了2个id-fid.tid,操作也有变化,网上很多说是要先check一下,但是我怎么看 ...

  9. 近期开发工作的一点心得体会

    近期,本人加班加点地完成了多个软件版本的开发工作.总结起来,有以下心得体会: 第一,软件的第一个程序版本非常的重要,它直接决定了产品的好坏.就像大楼的地基一样,软件后续版本的需求都是在第一个版本的基础 ...

最新文章

  1. centos改动sshport
  2. 练习PYTHON之EPOLL
  3. 从无到有算法养成篇-链式存储结构之循环链表
  4. iptables详解(13):iptables动作总结之二
  5. HDU 1495(非常可乐)
  6. NUnit单元测试笔记
  7. Yii框架官方指南系列41——专题:自动代码生成
  8. Microsoft store 微软商店 下载错误 代码: 0x80240004
  9. 2022-2027年中国植物染料行业市场全景评估及发展战略规划报告
  10. 关系型数据库的发展历史
  11. 软件测试工程师需要学习什么内容
  12. 计算机 小学数学应用题教学设计,小学数学教案相遇问题应用题
  13. 思维导图软件与团队协作
  14. ATTCK红队评估实战靶场(二)
  15. componentWillUnmount父子组件触发先后
  16. 如何查询SCI和EI检索号
  17. 【语音识别】语言模型LM
  18. 利用samba漏洞入侵linux主机(samba低版本漏洞利用)
  19. 使用了23年的Java要开始收费了?
  20. 数据处理-18.数据采集渠道

热门文章

  1. 计算机 学校教一半 自学一半,一半初中生无缘普高,上职业学校怎么样?
  2. Linux中w r x数学代码,Linux bc命令实现数学计算器
  3. 女生适合学python_Python适合女生学习吗?
  4. oracle map order,oracle面向对象技术中的map和order方法有何不同?
  5. java后台常用设计模式_Java中几个常用设计模式
  6. python定义一个函数列表排序_Python 列表(修改、添加、删除、排序)
  7. nginx location 匹配 多个规则_后端程序员不得不会的 Nginx 转发匹配规则
  8. Node.js设置CORS跨域请求中多域名白名单的方法
  9. 独木舟上的旅行(贪心)
  10. 面试官问你Java内存区域你用new创建对象来解释