原文:使用WebBrowser控件时在网页元素上绘制文本或其他自定义内容

第一次在CNBlogs上发Post是提出一个有关使用WebBrowser控件时对SELECT网页元素操作的疑惑,这个问题至今也没有解决,后来有朋友在该Post的评论里询问WebBrowser控件如何在网页元素上绘制文本的问题——但是由于我的懒惰,竟然已有半年时间没有浏览过自己的Blog,因此没有看到这位朋友的评论而不能及时提供回答,真是愧疚。
 
    大家都见过VS.NET的WebForm设计器,当我们在设计器中放入一个服务器控件的时候发现在该控件上会出现一个绿色的小箭头标签;在Office 2003中包含了一个名为InfoPath 2003的智能文档工具,在它呈现的表单里当一个表格元素得到焦点时就会出现一个自定义表格的操作按钮,而用Spy++查看它们的窗口句柄可以发现它们都是基于WebBrowser控件实现的,既然如此,我们在项目中使用WebBrowser控件时如何实现类似功能呢?

在IE5.5及后续版本中引入了Element Behavior概念,通过Element Behavior我们可以获得自定义网页元素或者添加标准网页元素(IMG、TABLE、INPUT等)行为的能力。Element Behavior最常见的实现方式是HTC文件,HTC文件是用脚本编写的Element Behavior。
    除了HTC文件,我们也可以用传统程序语言(VC、Delphi,当然包括C#)来实现Element Behavior,这就是所谓的Binary Behavior,通过Binary Behavior我们能够获得更强大的定制能力,比如在网页元素上绘制文本或其他自定义内容——一张图片,甚至一个可以响应点击的按钮。
    一个Binary Behavior就是一个实现IElementBehavior接口的COM对象,如果Binary Behavior同时实现了IHTMLPainter接口,就可以在HTML元素上绘图。
    相关的教程和接口说明都可以从MSDN上找到,在此我不再累述,请参见
    http://msdn.microsoft.com/workshop/browser/behaviors/binbehaviors_node_entry.asp
    这里提供一个C#实现的简单示例,演示如何为网页中的图片添加一个按钮。 
    点此下载示例源程序(VS2003解决方案)

另提供一个Delphi实现相同功能的示例
    点此下载(Delphi7项目文件)

使用WebBrowser控件时在网页元素上绘制文本或其他自定义内容的更多相关文章

  1. 如何清除应用程序承载 WebBrowser 控件时缓存

    原文:如何清除应用程序承载 WebBrowser 控件时缓存 http://support.microsoft.com/kb/262110/zh-cn察看本文应用于的产品 function loadT ...

  2. VC-基础-WebBrowser控件中弹出新网页窗口

    用webbrowser控件浏览网页时,常弹出新的网页窗口,若不做任何控制的话,会在默认浏览器(一般是IE)中打开,这样就在新的窗口打开了,原程序就很难控制了,且存在webbrowser控件和IE的se ...

  3. 使用WebBrowser控件播放Flash网页相关问题解决方法(转)

    就是写一个类继承WebBrower控件,重写 protected   override   void   WndProc(ref   System.Windows.Forms.Message   m) ...

  4. 使用Uploadify 时,同时使用了jQuery.Validition 验证控件时,在IE11上出现JS缺少对象错误。

    场景: 使用jQuery.1.8.2 使用 Uploadify 3.2上传控件 使用jQuery.Validition 1.9 验证 使用IE 11 时,当鼠标点击上传按钮时,会出现JS 缺少对象错误 ...

  5. Webbrowser控件判断网页加载完毕的简单方法 (转)

    摘自:http://blog.csdn.net/cometnet/article/details/5261192 一般情况下,当ReadyState属性变成READYSTATE_COMPLETE时,W ...

  6. C# Winform WebBrowser控件

    C# WinForm WebBrowser 1.主要用途:使用户可以在窗体中导航网页. 2.注意:WebBrowser 控件会占用大量资源.使用完该控件后一定要调用 Dispose 方法,以便确保及时 ...

  7. <总结>delphi WebBrowser控件的使用中出现的bug

    Delphi WebBrowser控件的使用中出现的bug:  1.WebBrowser.Visible=false:Visible属性不能使WebBrowser控件不可见,暂时用 WebBrowse ...

  8. 浏览器自动化的一些体会9 webBrowser控件之零碎问题3

    WebBrowser控件最大的优点是可以轻松嵌入win form程序中,但是微软好像对这个控件没什么兴趣,这么多年了还没有改进,结果造成一堆问题. 1. 不支持https 2. 缺省模拟ie 7,如果 ...

  9. c# webBrowser控件与js的交互

    转自:http://blog.csdn.net/sd2131512/article/details/7467564 [System.Runtime.InteropServices.ComVisible ...

随机推荐

  1. 【C语言探索之旅】 第一部分第九课:函数

    内容简介 1.课程大纲 2.第一部分第九课:函数 3.第一部分第十课预告: 练习题+习作 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. ...

  2. 【Android进阶】使用Andbase快速开发框架实现常见侧滑栏和滑动标签页组合效果

    最近闲来无事,在网上寻找源代码看,突然发现了一个国内技术牛人开发的快速开发框架Andbase,花了一天时间研究了下源码和怎么使用,现将开发常见的侧滑栏和滑动标签页组合效果的使用介绍个大家,希望可以减少 ...

  3. Ubuntu Linux中开启MySQL远程访问功能

    为了给服务器一个真实的运行环境,今天在内网中部署了一台Ubuntu Linux服务器,其中最头疼的就是MySQL的安装,apt下载更新的速度太慢了,于是就自行编译了一下MySQL的源码,具体的编译方法 ...

  4. java提高篇(十四)-----关键字final

    在程序设计中,我们有时可能希望某些数据是不能够改变的,这个时候final就有用武之地了.final是java的关键字,它所表示的是"这部分是无法修改的".不想被改变的原因有两个:效 ...

  5. design pattern Builder 生成器设计模式

    其实设计模式可以学习很有趣,你并不需要有这么难啃旱地FOG对我来说,当然,这些都是健康的骨骼啃啃. 在本文中,建造者模式设计一个搞笑的一幕.根据这一模型来学习功夫的方法,哈哈. 基类的第一,设计.那么 ...

  6. POJ 3414--Pots(BFS+回溯路径)

    Pots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9963   Accepted: 4179   Special Ju ...

  7. Spring Framework 下载链接_现在有空

    下载链接:http://repo.spring.io/libs-release-local/org/springframework/spring/ 点击打开链接 包括Spring的各个版本号: 3.2 ...

  8. android从中国天气网获取天气

    http://download.csdn.net/detail/sun6223508/8011669      里面的一切..可完全移植 版权声明:本文博主原创文章.博客,未经同意不得转载.

  9. 我的java学习笔记(一)

    第一个java程序,还是熟悉的hello world public class FirstSample { //类 public static void main(String[] args) //方 ...

  10. hdu 1290 竭诚为杭州电礼物50周年

    专门为杭州电50周年礼事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...