C#为IE编写BHO插件心得
啥是BHO,其实大家都用过,没听过只是没在意而已,来张图你就知道是什么了
是不是很熟悉,就是这么个玩意~~
先说说我要用来干嘛~我们有个库,里面数据很全面,但是某个部门需要在第三方的B/S系统录入某些信息,表单数据较大,可能这些数据我的库里面有,在不改动第三方系统的前提下,把我库中的匹配数据填充到第三方系统表单中去!
可能首先想到的解决方式就是:搞个浏览器嘛,winform或者webkit都行,但是你得考虑到第三方系统如果使用了各自厂商的activeX怎么办。。。
其次,自己写个activeX嘛,这个是个好办法,但是没签名,还得设置IE安全性
后来,别人告诉我有个东西叫做BHO,可以直接C#开发,也就是利用mshtml修改html结构,给dom注册或移除事件,网上例子很多,这里就不拿出来了,我的也是下载人家的用的,然后自己根据自己的需要做修改!
网上有个例子是给dom添加click事件,由于我要用到blur事件,受click事件的影响,我把blur的写法按照click来写,发现根本不起作用,废了好大的劲才找到资料,怎么用这些事件,mshtml里面几乎所有的事件(click)除外都会路由到document去处理,不能直接给dom元素添加事件(click)除外,否则不回起到任何作用!切记!
其次引用的COM组建,网上说的比较含糊,mshtml大家都还知道是啥,什么SHDOCVW根本不知道了
他们的完整名称如下图
最后就是安装了,运行Vistudio Tools 里面的开发人员工具,然后进入到你BHO程序的debug或者release目录运行regasm /c "你的类库文件名"就安装成功了,打开IE,输入网址,看看效果怎样!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构