1. 苏葳的备忘录首页
  2. 编程

C#开发BHO程序中的几个问题

c# bho因为网游eve的官方论坛封掉了签名图功能,所以想自己写个BHO插件来“伪造”签名图。研究了几个C++程序,但是始终对响应WebBrowser控件内的HTML事件不得其门。这样就只好在打开回复页面时,将签名加在文本区域下面了。这时发现了个C#的BHO程序实现,尽管只是个完成这种基本功能的简单样本,但是证明了不见得用ATL和C++才可以做这种BHO程序,倒是个好消息。

C#编写的BHO程序如何注册暂且不说,开发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#的缺省编码保持一致),而在windwos 2003下编写的这个文本文件,缺省编码为DBCS,调试时显示在论坛上的汉字为乱码。所以又找了个探测文本文件编码的类加进去,正常。Java和C#这些较晚出现的编程语言基本都采用了Unicode编码,这将为以后的软件产品国际化带来很大的方便。但是目前的操作系统因出现时间的早晚,对字符的编码处理各有不同,这一点是必须要克服的。 由于用到了mshtml库,自然在发布时需要相应的文件(将近10M),所以例子作者制作了一个几十K的小库,只将此插件中用到的一些函数放入。具体制作的方法尚不得而知。目前最迫切想要知道的是,除了捕获外层的webbrowser的事件之外,如何捕获文档中HTML元素触发的HTML事件(如Form提交,按钮点击等),这种能力意义重大。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/177.html

发表评论

邮箱地址不会被公开。 必填项已用*标注