IE(微软)浏览器扩展开发初探

         最近开发浏览器插件有点上瘾,先开发了一个FF(火狐)浏览器插件,后来又开发了一个谷歌浏览器的插件,还是不觉得不过瘾,这次要尝试开发一个粗糙的IE浏览器插件,最终实现在一键实现订餐,一键取消订餐操作。
         凡事知道就好做了,只是这次走了些弯路。网上只要提到IE插件开发的无不提到Com,BHO等等概念,为此我还下载了vs2010,安装platform sdk,并到codeproject下载N个例子进行研究,虽然已经好几年不用vs2010了,也不曾在写com了,还好有点底子,基本能看懂,了解了下BHO的原理,同时了解了com的一些东西,也算有些收获。不过越看越觉得我的不需要这么麻烦,不需要BHO处理各种消息状态。我只需要在IE上增加一个按钮,点击这个按钮,调用我写的js触发一个操作,并给出提示即可。走点弯路没关系,下次也许用的到。

         现在改变策略,既然要增加按钮,触发操作。那到internet explorer development上找帮助就可以了,还真找到一篇文章,关于如何add menu items。仔细阅读了解到,IE上的按钮是通过增加注册表项来完成了,随即生成了两个注册表项

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InternetExplorer\Extensions\{5D78A592-AA1A-4E6F-A808-9214B4A7222A}]
"CLSID"="{5D78A592-AA1A-4E6F-A808-9214B4A7222A}"
"MenuText"="我要订餐"
"MenuCustomize"="我要订餐"
"MenuStatusBar"="我要订餐"
"ClsidExtension"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InternetExplorer\Extensions\{BA6C7C63-9EFC-4DA1-B5D9-666A624F4831}]
"CLSID"="{5D78A592-AA1A-4E6F-A808-9214B4A7222A}"
"MenuText"="取消订餐"
"MenuCustomize"="取消订餐"
"MenuStatusBar"="取消订餐"
"ClsidExtension"=""
          导入注册表项,重启IE,在工具中看到这两个选项,我要订饭和取消订饭。只是点击这两个menu item没有任何响应,原因是我们没有给这两个menu item增加增加响应事件。很简单在注册表项中增加一个exec即可,我们要使用之前的js,那就需要写一个页面来执行这个js,比如写如下代码

<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8">
<title>订餐系统</title>
<meta name="keywords"content="">
<scriptsrc="./dingcan.js"></script>
</head>
<bodyοnlοad="DingCan.loginAndDingCan()">
<span id="dcdingcan">正在订餐中...</span>
</body>

如果我们的exec这样写

"Exec"="file:///D:/Program%20Files/dingcan/dingcan.html"
IE会重新打开一个窗口,用户体验不好,这里我们用点小技巧,把.html修改成.hta后缀,整个事件清净了,这样设置之后,点击按钮后,是这个样子的有点大,

在html增加如下代码,设置窗口大小,
<scriptlanguage="javascript">
window.resizeTo(200,100)
</script>
这次是这样的,完美了


Hta内容补充:HTA 全名为 HTMLApplication ( HTML 全名为 Hyper Text Markup Language ),HTA 为 HTML 应用程序。HTA格式的文件不需要在浏览器中执行,windows可以直接执行此程序。更详细的内容可以参考HTML Applications: http://msdn.microsoft.com/en-us/library/ms536471%28v=VS.85%29.aspx

IE插件实现的很猥琐,只不过他实现了我要的功能。这几个扩展都是皮毛,没有什么高深技术含量,只是希望对大家有所帮助,也希望消除做浏览器扩展的不自信。

参考资料
Add menu items http://msdn.microsoft.com/en-us/library/aa753591(v=VS.85).aspx
Internet Explorer Development http://msdn.microsoft.com/en-us/library/bb188743.aspx


BHO(Browser Helper Object,浏览器辅助对象,简称BHO)   BHO是微软推出的作为浏览器对第三方程序员开放交互接口的业界标准,通过简单的代码就可以进入浏览器领域的“交互接口”(INTERACTIVED Interface)。通过这个接口,程序员可以编写代码获取浏览器的行为,比如“后退”、“前进”、“当前页面”等,利用BHO的交互特性,程序员还可以用代码控制浏览器行为,比如修改替换浏览器工具栏,添加自己的程序按钮等。这些在系统看来都是没有问题的。BHO原来的目的是为了更好的帮助程序员打造个性化浏览器,以及为程序提供更简洁的交互功能,现在很多IE个性化工具就是利用BHO的来实现。 编辑本段 技术优势   “浏览器劫持”是一种不同于普通病毒木马感染途径的网络攻击手段,而是使用各种技术(如DLL插件等)插件对用户的浏览器进行篡改。安装后,它们会成为浏览器的一部分,可以直接控制浏览器进行指定的操作,根据需要,可以让你打开指定的网站,甚至是收集你系统中的各种私密信息。最可怕的是只有当浏览器已经被劫持了,你才会发现,反应过来,原来电脑已经出现了问题。比如IE主页被改,开机就会弹出广告等等。目前,浏览器劫持已经成为Internet用户最大的威胁之一。其实“浏览器劫持”就是通过BHO的技术手段进入你的系统的,而这种技术是合法的。   从某种观点看,Internet Explorer同普通的Win32程序没有什么两样。借助于BHO,你可以写一个进程内COM对象,这个对象在每次启动时都要加载。这样的对象会在与浏览器相同的上下文中运行,并能对可用的窗口和模块执行任何行动。例如,一个BHO能够探测到典型的事件,如GoBack、GoForward、DocumentComplete等;另外BHO能够存取浏览器的菜单与工具栏并能做出修改,还能够产生新窗口来显示当前网页的一些额外信息,还能够安装钩子以监控一些消息和动作。 编辑本段 注册表位置   BHO在注册表中的位置是:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects,有兴趣的朋友可以在这里做做实验。不过一定要记住你更改的每一步,否则会出错的哦!   BHO对象依托于浏览器主窗口。实际上,这意味着一旦一个浏览器窗口产生,一个新的BHO对象实例就要生成。任何 BHO对象与浏览器实例的生命周期是一致的。其次, BHO仅存在于Internet Explorer 4.0及以后版本中。   如果你在使用Microsoft Windows? 98, Windows 2000, Windows 95, or Windows NT版本4.0 操作系统的话,也就一块运行了活动桌面外壳4.71,BHO也被 Windows资源管理器所支持。 BHO是一个COM进程内服务,注册于注册表中某一键下。在启动时,Internet Explorer查询那个键并把该键下的所有对象预以加载。   迅雷中TDAtOnce_Now.dll和xunleiBHO_Now.dll为安全   如何发现BHO里面的危险模块.   首先有一个能够查看进程的软件 冰刃就不错 下面以它为例:   先打开冰刃—会看到一个BHO在这里就可以看到危险BHO进程了
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值