原文:使用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. 【Android基础】单元测试的配置

    1.在AndroidManifest清单文件中进行配置 <application android:allowBackup="true" android:debuggable= ...

  2. 《Pro Android Graphics》读第三季度票据

    Android Frame Animation: XML, Concepts and Optimization Frame Animation Concepts: Cels, Framerate, a ...

  3. [原创].NET 分布式架构开发实战之一 故事起源

    原文:[原创].NET 分布式架构开发实战之一 故事起源 .NET 分布式架构开发实战之一 故事起源 前言:本系列文章主要讲述一个实实在在的项目开发的过程,主要包含:提出问题,解决问题,架构设计和各个 ...

  4. [2011山东ACM省赛] Identifiers(模拟)

    Identifiers Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述  Identifier is an important ...

  5. Docker简介(转)

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  6. Laravel nginx 伪静态规则

    最近的各种调查PHP相框(CI, Cake, ThinkPHP, Laravel, Yii)情绪Laravel它看起来很漂亮,下一个深入了解.用发展机Apache,Stage在运行nginx,一旦部署 ...

  7. 深入理解Linux修改hostname(转)

    当我觉得对Linux系统下修改hostname已经非常熟悉的时候,今天碰到了几个个问题,这几个问题给我好好上了一课,很多知识点,当你觉得你已经掌握的时候,其实你了解的还只是皮毛.技术活,切勿浅尝则止! ...

  8. top使用命令

    top命令 第一行和uptime命令一样,都有系统的负载. 10:36:19 当前时间 up 1day .7min 系统执行时间.格式为天 时:分 1 user 当前登录用户数 load averag ...

  9. java.lang.Runnable接口

    大家都知道使用线程的2种方式,一是继承Thread类,二是实现Runnable接口.实际上,即使你实现了Runnable接口,终于还是要构造一个Thread类的对象.看过Thread源码发现,事实上这 ...

  10. .NET开发者必备的11款免费工具

    原文:.NET开发者必备的11款免费工具 如今,HTML5,jQuery,JavaScript等等这些热门技术,受到了开发者们的强烈追捧,有了这些开发工具也为开发者们减轻了许多负担.本文为开发者介绍了 ...