一 C#也可以编写BHO程序
因为eve的官方论坛封掉了签名图功能,所以想自己写个BHO插件来“伪造”签名图。研究了几个C++程序,但是始终对响应WebBrowser内的 HTML事件不得其门。这样就只好在打开回复页面时,将签名加在文本区域下面了。这时发现了个C#的实现,尽管只是在完成这种基本功能的简单样本,但是证 了不见得用ATL和C++才可以做这种BHO程序,倒是个好消息。
二 C#编写的BHO程序的注册
程序暂且不谈,用一个框架式的简单例程来加以扩充是相当容易的。在生成了DLL文件之后(相当小),如何注册此DLL为BHO插件呢?
用regsvr32是不行的,显然.NET支持的手段也相应更新了。相应的注册工具是regasm。这个程序可以在根盘下找到( 应该是随.Net FrameWork 2.0发布版一起安装的)
regasm bho.dll即可完成写入注册项,然而此时正确的bho.dll却不成正常工作(未加载),按照例子文档所要求的,用/codebase参数注册后,方 可正常运行。估计是因为新版IE对BHO插件有软高的安全性要求,因此未签名的插件(如自已编写的bho.dll)无法加载。而/codebase则是强 制以签名控件的方式注册bho.dll,因而一定要加上/codebase选项。
三 文本文件编码的自动识别
在编码过程中,因将原来的XML随机选择方式改为了从一个固定的文本文件中读取,相应的文本文件编码问题也出现了(XML可以在属性中指定编码以与C#的缺省编码保持一致),而在2003下编写的这个文本文件,缺省编码为DBCS,调试时显示在论坛上的汉字为乱码
所以又找了个探测文本文件编码的类加进去,正常。Java和C#这些较晚出现的编程语言基本都采用了Unicode编码,这将为以后的软件产品国际化带来很大的方便。但是目前的操作系统因出现时间的早晚,对字符的编码处理各有不同,这一点是必须要克服的。
 
由于用到了mshtml库,自然在发布时需要相应的文件(将近10M),所以例子作者制作了一个几十K的小库,只将此插件中用到的一些函数放入。具体制作 的方法尚不得而知。目前最迫切想要知道的是,除了捕获外层的webbrowser的事件之外,如何捕获文档中HTML元素触发的HTML事件(如Form 提交,按钮点击等),这种能力意义重大。
 
 

C#开发BHO程序(引)的更多相关文章

  1. C#开发BHO插件UrlTrack

    最近忽然突发奇想,想统计一下我最经常上的网站是哪些,并且在这些网站上都停留了多久.为此决定写一个BHO插件来做这件事. BHO(Browser Help Objects)是实现了特定接口(IObjec ...

  2. ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序

    基于Visual Studio 2015,你可以: 方便的管理前端包,如jQuery, Bootstrap, 或Angular. 自动运行任务,如LESS.JavaScript压缩.JSLint.Ja ...

  3. 小米手机(HM1SW)高通开发android程序全过程

    小米手机(HM1SW)开发android程序全过程 修改历史: 2016年5月9日  --------  整理文档 a.增加了手机基本信息. b.增加360手机助手连接说明 2016年2月26日  - ...

  4. windows环境下Eclipse开发MapReduce程序遇到的四个问题及解决办法

    按此文章<Hadoop集群(第7期)_Eclipse开发环境设置>进行MapReduce开发环境搭建的过程中遇到一些问题,饶了一些弯路,解决办法记录在此: 文档目的: 记录windows环 ...

  5. Eclipse开发Android程序如何在手机上运行

    android开发不论是在真机上调试还是最终发布到真机上都非常简单,过程如下: 1.安装usb驱动 手机要能与电脑相连,当然要安驱动了.效果就是你插入手机,电脑显示驱动已识别.驱动安装的官方教程:ht ...

  6. Eclipse开发JavaWeb程序报Server Tomcat v7.0 at localhost was unable to start

    出处:http://www.javaweb1024.com/info/582.jspx 原因重现: Eclipse开发JavaWeb程序,启动Servers的Tomcat服务器,突然跳出弹出框,内容显 ...

  7. 9段高效率开发PHP程序的代码

    php是世界上最好的语言 在php网站开发中,大家都希望能够快速的进行程序开发,如果有能直接使用的代码片段,提高开发效率,那将是起飞的感觉.今天由杭州php工程师送出福利来了,以下9段高效率开发PHP ...

  8. opencv开发的程序分发给客户时所需要的dll文件

    这里主要讲在其他裸机,没有搭建开发环境机器上运行自己开发的程序. 为了测试,我专门用visualbox搭建了一个虚拟机(主机和虚拟机都是win7系统) 在发给别人程序运行出现错误:msvcp100d. ...

  9. 基于MINA框架快速开发网络应用程序

    1.MINA框架简介 MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架.通过使用M ...

随机推荐

  1. Display Images in widget

    在自定义的widget中显示图片. 思路:定义类MyWidget,public 继承自QWidget,然后实现 void paintEvent(QPaintEvent *). 新建Empty qmak ...

  2. grunt 执行

    几天以前,我决定开始启用一个CSS预处理器,找了很久,我选择了SASS并且尝试着去安装它.但是这似乎不是一件简单的事,在安装过程中出现了许多让我始料不及的问题,我很沮丧,但查找了很多资料,我终于找到了 ...

  3. 关于我和Github不得不说的一些小事

    你好,我叫黄雅婷,学号是1413042031,网络工程142班.因为小时候家里有很多课外书,有关神话和科学方面的杂志和书籍等,所以从小就喜欢看书,现在比较不挑,什么书都喜欢看,就是给我本字典,我也能看 ...

  4. SQUID之cache_peer

    一共关系到cache_peer/always_direct/never_direct/hierarchy_stoplist/prefer_direct等配置项. squid的使用指南上,关于alway ...

  5. 利用windows系统ftp命令编写的BAT文件上传[转]

    利用windows系统ftp命令编写的BAT文件上传[转] 利用windows系统ftp命令编写的BAT文件上传[转] 在开发中往往需要将本地的程序上传到服务器,而且用惯了linux命令的人来说.在w ...

  6. SQL备份还原,分离附加

    备份.还原.分离.附加 备份:在要备份的数据库上右键点击任务,在选择备份.在打卡的对话框中根据需要选择.注意:备份过期时间不能为0,否则会马上过期.目标可根据需要放在任何位置.最后,点击确定,备份成功 ...

  7. RESTful 杂文归集

    Json格式与对象转换 org.codehaus.jackson.map.ObjectMapper 工具转json格式,进行接口文档书写工具http://editor.swagger.io/#/ ja ...

  8. linux中socket的理解---4

    一.socket 一般来说socket有一个别名也叫做套接字. socket起源于Unix,都可以用“打 开open –> 读写write/read –> 关闭close”模式来操作.So ...

  9. HDU 1029 Ignatius and the Princess IV --- 水题

    HDU 1029 题目大意:给定数字n(n <= 999999 且n为奇数 )以及n个数,找出至少出现(n+1)/2次的数 解题思路:n个数遍历过去,可以用一个map(也可以用数组)记录每个数出 ...

  10. POJ 2186 Popular Cows(强连通)

                                                                  Popular Cows Time Limit: 2000MS   Memo ...