一。 什么是工具条 工具条(英文名称为Toolbar),又名工具栏。工具条是什么?在Google的定义搜索结果中,有17种定义。根据微软的官方定义,工具条是由一组工具条按钮或其他功能控件组成的一个特定区域。然而笔者本文要品论的是浏览器工具条。
那么什么是浏览器工具条?浏览器工具条是浏览器的扩展应用程序,由位于浏览器顶部的连续的一组按钮或其他功能控件组成的一个整体操作区,以帮助用户快速访问网站及提供特定功能。
1. 工具条不“姓”浏览器
工具条并不是一个新新名词。早在我们开始使用Windows 98的时候,无论是资源治理器、IE浏览器,还是其他应用程序,我们都可以在应用程序的菜单下面,看到一系列小图标或功能控件组成工具条。所以说工具条是任何应用程序的组成部分,相对于菜单而言,提供给用户更加便捷操作的一种途径。
在Microsoft Visual Studio 6.0中,Windows通用控件中提供的CoolBar就是一种工具条控件,任何开发人员可以借助这类控件开发一个带工具条的Windows应用程序。从广义上来说,浏览器工具条只是工具条在浏览器上的一个具体应用。下文很多地方的浏览器工具条直接简称为工具条。
2. 工具条也不“姓”IE
Web是最早源于美国军方的应用,其全称是WWW(World Wide Web),中文翻译为万维网。最早使用的Web浏览器并不是Internet EXPlore(简称IE),而是出自Berners-Lee之手的,原来的名称是WorldWideWeb,后来改名为 Nexus.20世纪90年代初出现了许多浏览器,包括Samba、Mosaic、Lynx、Opera等。1994年12月,Netscape发布了Mozilla的1.0 版,第一个盈利性质的浏览器Netscape Navigator诞生。2002年又发布了一个开源的版本,这发展为后来流行的Firefox浏览器,于2004年11月发布。直至今日,浏览器市场上也是硝烟四起。虽然IE占据绝对市场份额,但在有些国家或专门技术人员也在使用Mozilla Firefox、Maxthon,中国也有些QQ爱好者使用腾讯TT浏览器。
在中国的网络用户中,IE浏览器仍然占据非常高的比例。IE、Mozilla Firefox、Maxthon、Opera、腾讯TT等都提供了浏览器工具条的扩展功能。所以工具条是所有浏览器软件的基本扩展功能。
3. 工具条的组成元素
浏览器工具条是由一组按钮或其他功能控件组成的。从工具条的功能布局和功能设计角度来看,工具条主要由工具条Logo、输入框、功能按钮、下拉菜单、分隔符、Web控件、其他非功能按钮控件等内容组成。
1) 工具条Logo.一般在设计工具条时,第一个图片或文字位置都是工具条的标志,当然更多是和网站标志一致的。
2) 输入框。工具条的一种非功能按钮控件。在工具条上提供可供用户输入数据的控件,输入框大致可以概括为文本输入框、下拉组合输入框以及密码输入框等几类。下拉组合输入框有个好处,可以记忆以前输入的内容。工具条的搜索、会员登录都是通过输入框来接受用户输入的数据。
3) 功能按钮。功能按钮可以同时由图片或文字组成。功能按钮分为三类:普通按钮、整体的下拉按钮、分离的下拉按钮。下拉按钮都带有下拉菜单。功能按钮从使用功能上来说,大致包括网站导航按钮、功能型按钮。上网助手之类的功能按钮属于功能型按钮。
4) 下拉菜单。对于下拉按钮而言,当用户点击下拉按钮或下拉箭头,弹出下拉式菜单,菜单可以包含多级菜单。
5) 分隔符。在工具条或菜单上,按功能相似性分组,不同组之间用分隔符隔开。让用户比较醒目地识别功能按钮或菜单。
6) Web控件。工具条的一种非功能按钮控件。在工具条上,可以展示另外的Web地址网页或Html内容。但工具条Web控件展示的内容必须是精短简洁,不能长篇累犊,当然可以用网页marquee元素实现滚动效果。
7) 其他非功能按钮控件。除了上面的输入框、Web控件,也可以加入其他的非凡控件。比如媒体播放、RSS聚合内容、邮件提醒等。
以上功能并不是工具条的全部元素。实际上,就像互联网的发展一样,我们很难去界定工具条的功能。
4. 工具条类型
在了解了浏览器工具条的基本概念和组成元素后,我们需要了解一下有哪些类型的工具条。工具条类型综合概括为以下五类:
1) 个人用工具条:个人用工具条是指归个人或几个朋友使用的工具条。这类工具条比较随意,但最重要的一条原则是,把自己经常访问的网站和使用的功能设置到工具条上,随心所欲。
2) 网站型工具条:网站型工具条最重要的目的是推广网站,增加忠诚用户的访问量。这个时候,我们应该从用户的角度考虑,用户最经常访问的功能是什么,本网站的特色功能是什么。在某种程度上,这类工具条的推广和应用依靠于本网站的忠诚用户量。
3) 专项型工具条:专项型工具条不是针对特定的某个网站,而是针对某类用户群或某个具体的行业领域。设计专项型工具条时,应该优先考虑资源整合。没有的功能需要从本行业或本领域挖掘,重复的功能需要进行优化筛选。目前这类工具条不多,相信未来这类工具条会大有应用前景。
4) 企业型工具条:企业型工具条是用在企业内部的工具条,需要把企业内部的信息系统、用户登录、电子邮件、企业通讯等整合到一个工具条上。这样企业的员工可以方便地访问企业内部相应的信息系统或功能。类似中兴、联想、海尔等大型企业假如开发这样的工具条给员工使用,相信必定在公司内部IT应用中,是一个非常独特到位的应用。
5) 特色型工具条:当然,还有一些非常有意思非常特色的工具条。比如Alexa工具条提供<strong class="kgb" _u7F51_u7AD9_u6392_u540D";KeyGate_ads.ShowGgAds(this,"_u7F51_u7AD9_u6392_u540D",event)" style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline"
http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=B7Mh7YXShR5KLKY3A6wPf6f2hDqCD9CGol4mMAsCNtwHQyhYQBBgEIK2F0A0oFDgAUL_Ji5MHYJ3p1YG4BaoBCjIwMDAwMzc1NDGyAQ93d3cua25vd3NreS5jb23IAQHaASJodHRwOi8vd3d3Lmtub3dza3kuY29tLzM3NjQwOS5odG1sqQI-Pjm50qqCPsgCgJdOqAMB6AMF6APdAw&num=4&adurl=http://www.futaide.com.cn/&client=ca-pub-5186439242807756");GgKwClickStat("网站排名","www.futaide.com.cn/","afc","2000037541");" _u7F51_u7AD9_u6392_u540D"">网站排名数据;Skype Web工具条提供在线通话功能;IE开发工具条提供在线进行网页开发的功能。
QQRead.com 推出<strong class="kgb" _u6570_u636E_u6062_u590D";KeyGate_ads.ShowGgAds(this,"_u6570_u636E_u6062_u590D",event)" style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline"
http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=BkoiYYXShR5KLKY3A6wPf6f2hDoHbyDb9_qKQBMCNtwHwkwkQCRgJIK2F0A0oFDgAUIum7ZkHYJ3p1YG4BaAB75iZ9QOqAQoyMDAwMDM3NTQxsgEPd3d3Lmtub3dza3kuY29tyAEB2gEiaHR0cDovL3d3dy5rbm93c2t5LmNvbS8zNzY0MDkuaHRtbKkCPj45udKqgj7IAtXD9QOoAwHoAwXoA90D&num=9&adurl=http://www.zgdskj.com&client=ca-pub-5186439242807756");GgKwClickStat("数据恢复","www.zgdskj.com","afc","2000037541");" _u6570_u636E_u6062_u590D"">数据恢复指南教程 数据恢复指南教程 数据恢复故障解析 常用数据恢复方案 硬盘数据恢复教程 数据保护方法 数据恢复软件 专业数据恢复服务指南
5. 工具条特性
浏览器工具条是和浏览器紧密绑定的网络辅助软件。其和其他应用软件相比,有着自己显著的特性:
1) 运行简单。用户打开浏览器,工具条同时启动,不需要类似QQ一样单独点击运行。
2) 在线时间长。由于工具条是和浏览器紧密绑定,只要浏览器打开,则工具条就处于运行状态。即使是MSN、QQ、Outlook Express也难决胜败。
3) 轻便小巧。工具条程序本身大小一般在100K至300K左右。假如是EXE或MSI安装包,则一般在700K左右,而采用CAB自动下载安装方式一般就在200K左右。
4) 占用资源低。工具条是浏览器进程内组件,一般只会增加几百K内存而已。
5) 简单易用。工具条位于浏览器上方,不需要做非凡设置,对于工具条上的功能用户很轻易使用。
6) 功能强大。由于工具条也是本地计算机运行一个组件,一般应用程序的功能都可以在工具条上实现。
当然,由于工具条和浏览器紧密绑定,所以假如<strong class="kgb" _u7A0B_u5E8F_u5F00_u53D1";KeyGate_ads.ShowGgAds(this,"_u7A0B_u5E8F_u5F00_u53D1",event)" style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline"
http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=BT1OmYXShR5KLKY3A6wPf6f2hDtDdwUGs98fVBMCNtwGw8igQARgBIK2F0A0oFDgAUMvcwbIFYJ3p1YG4BaoBCjIwMDAwMzc1NDGyAQ93d3cua25vd3NreS5jb23IAQHaASJodHRwOi8vd3d3Lmtub3dza3kuY29tLzM3NjQwOS5odG1sgAIBqQI-Pjm50qqCPsgC6ILUBKgDAegDBegD3QM&num=1&adurl=http://www.shsunedu.com/proII/cn/product_detail.asp%3Fproductid%3D210&client=ca-pub-5186439242807756");GgKwClickStat("程序开发","www.shsunedu.com","afc","2000037541");" _u7A0B_u5E8F_u5F00_u53D1"">程序开发没有经过严格测试,轻易引起IE的异常。这也是工具条的特性之一。
二。 工具条有什么用
1. 天生我材必有用
浏览器工具条是伴随Web应用的普及而产生的。传统的客户端—服务器(C/S)应用程序模式越来越多地被浏览器—服务器(B/S)应用程序模式所替代;另一方面,早期的Internet诸多应用包括Email、BBS、FTP、News Group等也越来越多地与浏览器Web牵手。这种趋势必然导致Web浏览器被越来越多的用户广泛使用。不管是在互联网应用,还是企业内部信息系统中,应用系统都离不开浏览器的支持。
浏览器工具条作为浏览器的网络辅助软件,必然发挥越来越大的作用。借助工具条,可以实现用户常用网络功能的最小化整合,将快速搜索、常用网址导航、广告轮播、拦截弹出窗口等功能全部添加于该工具条,成为用户实现高效上网的有力工具。用户只要轻松点击鼠标,就可以迅速得到自己想要的。
工具条可以带来用户什么不一样的感觉呢?根据2004年12月的艾瑞市场咨询公司提供的调研结果显示(见下图):使用IE工具条,最主要的几大原因依次是:“不用打开网页进行搜索” (59.4%)、“可以拦截广告”(53.3%)、“界面清楚”(43.3%)、“提供即时资讯”(26.8%)等。

笔者把用户使用浏览器工具条的原因概括为以下几个方面:
1) 简单易用。不用输入网址,可以直接访问喜欢的网站或网页。
2) 就在手边。工具条和浏览器同时启动,不用在打开独立的应用程序。而且随时都在浏览器上面,很方便操作。
3) 多功能多方位搜索。可以一次输入,多次进行不同网站不同功能的搜索。而且搜索的要害可以保存在历史记录中。
4) 直接使用特色功能。工具条上一般设置了网站提供的重点和特色功能,而这些功能不用深入网站的页面就可以在工具条上直接使用。
5) 使用辅助工具。一般工具条上提供了一些很实用的上网工具,如禁止弹出广告、清除上网记录等实用功能。
6) 获取动态资讯。工具条可以动态显示网站的最新资讯和信息,而且不影响用户正常浏览。
7) 功能强大。有些非常有特色的工具条,可以在工具条上提供媒体播放、在线杀毒、收件收发、Alexa排名数据等强大功能。有些工具条提供会员登录功能,然后直接在工具条上显示会员关心的个人信息。
8) 想用就用。用户可以安装多个不同工具条,在需要的时候把工具条显示出来,不需要的时候就隐藏不显示。
2. 为工具条正名
在短短的中国互联网的发展历程中,也出现了不少曲折和徘徊。如今的“南电信北网通”就是一个典型情况,有爱好的读者可以阅读一下《双线路能打通南北网络瓶颈吗?》一文。
一提到工具条,很多3年以上网龄的用户将会想到3721.这不能不说也是中国互联网发展历程中的一个悲哀。3721公司从1998年成立,一直专注于中文上网服务。3721 公司提供的中文上网服务,目的是让互联网用户无需记忆复杂的域名,也无需登录任何搜索引擎网站,直接在浏览器地址栏中输入中文名字,就能直达相关网站或者搜索到全面的信息。这本是一个对中国网络发展非常有益的事情,而结果却是事与愿违,在2005年7月的“流氓软件”网络调查中,有20万人参加投票抗议,3721名列十大流氓软件之首。“无信不立”,3721将渐渐地在网络中消失。然后,3721留下的后遗症仍然需要时间和公信才能渐渐抹平。
3721是地址栏插件,浏览器工具条是浏览器栏对象(Band)插件,同属浏览器插件。所以受3721影响的用户对工具条一直存在一定的偏见,笔者在这里要为浏览器工具条取回正名。
对网络用户而言,3721在暗处,而工具条在明处,至少不会欺骗用户。越来越多的第三方软件可以用来直接卸载任何工具条插件,下文也有介绍。笔者也了解了目前已有的近30个工具条情况,只有一款工具条不能通过正常方式卸载。未来的形势也不容乐观,所以需要网站建设商、工具条提供商、网络用户齐心努力,来创造一个文明的工具条网络环境。
星移斗转,我们不要再惧怕3721之类的流氓软件。同时,我们也要和这类流氓软件斗争到底。
3. 工具条应用场景
参考上文的“工具条类型”章节,我们可以知道工具条的应用范围确实很广泛。在IE秀网站上有一篇文章专题论述《IE工具条的应用场景》,有爱好的读者可以阅读一下。笔者把工具条的应用场景概括为以下几个方面:
1) 网站。目前最多的应用场景,网站提供给网站用户的便捷访问工具。
2) 大中型企业信息系统。将企业信息在工具条上集成,达到SSO、Portal的效果。
3) 网络个人用户。在IE秀上提供了自己动手制作工具条,从而使得任何网络个人用户可以创建自己的工具条。
4) 横向联盟。通过工具条实现同行网站的联盟。比如可以实现目前百狗(BaiGoo.com)类似的横向联盟。
4. 工具条发展趋势
工具条做为浏览器插件的一个应用,要研究工具条的发展趋势,我们需重点关注浏览器和插件的发展趋势。
在未来将主要有三个方面的发展趋势:一是浏览器厂商将集成更多的插件功能满足网络多样化应用的需求;二是浏览器插件技术将更加开放,使得传统的应用程序越来越方便和浏览器结合在一起应用;三是浏览器栏、工具栏、桌面工具栏等不同Band插件将更加集成,甚至不分你我。
互联网的发展给我们的生活带来天翻地覆的变化,其中通过浏览器操作的Web应用无疑是互联网中的最主要的应用,甚至是电子邮件、网络游戏、多媒体等互联网应用都可以通过浏览器操作完成。
浏览器已经成为承载互联网应用的最大客户端应用程序。正是由于这种趋势,浏览器的浏览功能与其他应用功能更加紧密地结合。一方面浏览器本身提供越来越多的集成功能;另一方面,浏览器的插件功能越来越强大。
现在一款浏览器自身开发的功能已经远远不能满足用户的需求,所以主流的浏览器都增加了外挂插件功能,让其他的程序开发者以自己的浏览器为基础,开发程序外挂插件,完善浏览器的功能。
所以浏览器工具条必将结合浏览器更加广泛地应用在我们的日常工作生活中。
三. 如何制作工具条
在了解了以上工具条特征和作用以后,我们可以考虑开始制作一个工具条。在制作工具条前,我们先需要明确一个问题,我们制作什么类型的工具条?
1. 如何开始预备
在预备开发工具条前,需要进行三方面的预备:功能需求预备、图标预备、程序接口预备。下面分别就这三方面的预备分别介绍。
首先是工具条功能需求预备。在安排软件<strong class="kgb" _u5DE5_u7A0B_u5E08";KeyGate_ads.ShowGgAds(this,"_u5DE5_u7A0B_u5E08",event)" style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline"
http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=Ba5yoYXShR5KLKY3A6wPf6f2hDpm3-yvl_ar-AsCNtwHwkwkQBxgHIK2F0A0oFDgAUPrcjowCYJ3p1YG4BaoBCjIwMDAwMzc1NDGyAQ93d3cua25vd3NreS5jb23IAQHaASJodHRwOi8vd3d3Lmtub3dza3kuY29tLzM3NjQwOS5odG1sqQI-Pjm50qqCPsgCidLlAqgDAegDBegD3QM&num=7&adurl=http://www.eastbooks.com.cn&client=ca-pub-5186439242807756");GgKwClickStat("工程师","www.eastbooks.com.cn","afc","2000037541");" _u5DE5_u7A0B_u5E08"">工程师进行工具条开发前,需要提交给软件工程师一份《工具条软件需求说明书》。不同类型的工具条,其功能设计的原则也不大一样。可以参考本文“工具条类型”章节的描述。
有个很有效果做法就是:用表格设计工具条的按钮及功能,用表格描述下拉菜单的名称及对应的链接或功能,再加一张工具条效果图。这样有两个好处:一是自己很对工具条需求和功能布局很清楚,另外就是交给软件工程师进行开发保 ⑷嗽焙苋菀桌斫狻?
其次是工具条图标预备。工具条的图标包括工具条Logo图标、按钮图标以及下拉菜单图标。工具条上的按钮图标一般默认的高度都是16像素,所以在预备图标时,建议把高度调整为16像素。对于图标类型,一般不外乎ICO、BMP、GIF格式。JPEG格式在工具条上很少用,因为工具条对颜色的要求不是很高,主要是清楚。不同的图标格式,对工具条开发时要求是不一样的,在预备图标时,建议最好先咨询软件工程师。
一般在工具条上使用最多的是ICO格式图标,ICO格式文件通常要比BMP格式文件小很多。在所有开发工具条的开发语言中,对ICO格式支持最好。笔者曾经选用了一些图标制作工具,还是觉得IconCool Editor比较不错。IconCool Editor是一款国外提供的软件,网上也有其汉化版。
在预备工具条图标时,有两点非常重要:
1) 把图标处理成透明背景。假如不是为了非凡效果,把图标处理成透明背景,这样图标就可以清楚地融合在工具条上。
2) 用24位真彩色或其以下的颜色深度。可以使用256色、16位增强色、24位真彩色,但最好不要使用32位真彩色,否则工具条不做非凡处理不能支持,显示不出图标。
在IE秀网站制作工具条的过程中,提供了不少多种类型的图标库,对于想偷懒一下,是个不错的选择。幸好上面的图标可以直接保存到本地使用。

最后是程序接口预备。程序接口不是工具条本身的接口,而是工具条上按钮或菜单对应的网页链接或功能。也有的人会问,我们的网站都是现成的,还需要预备程序接口吗?其实不然,因为<strong class="kgb" _u7F51_u7AD9_u5F00_u53D1";KeyGate_ads.ShowGgAds(this,"_u7F51_u7AD9_u5F00_u53D1",event)" style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline"
http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=B8fPzYXShR5KLKY3A6wPf6f2hDoGv-TiJjuKEAsCNtwHQhgMQAxgDIK2F0A0oFDgAUI7Nup8CYJ3p1YG4BaABwre8_wOqAQoyMDAwMDM3NTQxsgEPd3d3Lmtub3dza3kuY29tyAEB2gEiaHR0cDovL3d3dy5rbm93c2t5LmNvbS8zNzY0MDkuaHRtbIACAcgC4fO4AagDAegDBegD3QM&num=3&adurl=http://www.used-machines.com&client=ca-pub-5186439242807756");GgKwClickStat("网站开发","www.used-machines.com","afc","2000037541");" _u7F51_u7AD9_u5F00_u53D1"">网站开发时使用的URL地址或参数都是为网站服务的,网站中各个不同页面之间有很多关联,当时网站开发时并没有考虑到工具条的需要。
工具条上使用的网页链接最好使用比较固定不变的地址,否则网站修改后工具条上的链接就会出错。我们在预备过程中可能碰到以下三种不同的情况:
1) 有些功能需要重新组织。比如:网站提供了多种查询,这些查询页面分布在不同的位置,假如工具条直接采用这些查询地址,就难以维护,而且参数都有比较大的差异,假如能提供为工具条上的搜索提供统一的一个查询接口,再由这个接口调用不同的查询地址,这样就有利于维护。
2) 有些已有的网站程序需要调整。比如:工具条提供会员查询自己商品订购功能,在网站设计中,假如用户没有登录直接输入地址访问此页面,一般会提示用户“您尚未登录,请重新登录”字样,因为这样的操作一般是不答应的。然后在工具条上提供此功能,就最好不要给出此提示,而应该引导用户到一个登录页面。
3) 有些功能需要开发。比如:工具条上提供的滚动新闻、RSS等动态内容,可能没有现成的程序,需要进行设计开发。在这类功能设计开发前,需要和工具条程序所要求的接口一致,否则无法调用或者不能正常使用。
2. 如何开发工具条
由于目前用户使用的Web浏览器包括IE、Mozilla Firefox、Maxthon、腾讯TT等,不同浏览器的工具条开发技术差别很大。所以我们需要确定制作的工具条在什么浏览器上运行。目前在国内几乎95%以上的网络用户都是使用Internet Explore浏览器,下面以在IE上开发工具条为例进行说明。本文不就具体开发过程描述,主要对工具条的相关开发知识做些简要介绍。
浏览器有两种主要的插件技术:一是浏览器辅助对象(BHO)插件;二是浏览器栏对象(Band)插件。各个浏览器对BHO和Band的支持方式也差别很大。
BHO是依托于浏览器主窗口,和浏览器实例的生命周期一致的组件。在组件内,可以接收浏览器的动作事件,同时,在这些事件的响应中实现与浏览器的交互。
Band和BHO有些类似,Band需要比BHO实现某些Band接口,从而可以创建窗体。由于Band也是一类组件,所以Band也需要放到一个容器(即浏览器)中去使用。Band 对象分三种类型:浏览器栏(Explorer Bands)、工具栏 Band(Tool Bands)和桌面工具栏(Desk Bands)。
浏览器工具条也就是工具栏,是浏览器Band插件。IE浏览器工具条的默认显示需要借助BHO的ShowBrowserBar方法来实现。因此,开发工程师在预备开发IE工具条前,首先需要了解Band和BHO的相关知识。
对开发人员,有一个必须面队的问题就是选用什么开发语言开发工具条。VB、VC、Delphi、C++.NET、C# 都可以用来开发浏览器工具条。无疑VC是开发语言首选,也许有人会问,用C++.NET托管代码开发不好吗?那当然不行,托管代码需要有Microsoft .NET Framework支持才能运行,我们不能都让windows 2000、Windows XP的用户去下载安装Microsoft .NET Framework吧。VC是开发语言首选的原因主要有三个:一是VC运行效率高;二是VC发布的程序包最小;三是VC可以很好地进行ATL组件开发。以上前两个原因是互联网用户使用浏览器工具条的两个重要因素。
在实现IToolBar接口的ATL组件内,工具条按钮的创建是通过对TBBUTTON结构的设置来决定每一个工具条按钮的信息。TBBUTTON结构的数据成员包含了工具条按钮的图标、标题、类型、状态等相关信息。通过创建工具条的窗口句柄,并向工具条发送TB_ADDBUTTONS消息来完成工具条按钮的创建。对于工具条上的非按钮控件(比如输入框、滚动新闻、音乐播放等),则需要非凡处理。
工具条看起来占的位置不大,开发工作量确是很大。除了以上提到的Band和BHO技术,软件工程师还需要面对文件、注册表、图片、输入框、下拉菜单、事件响应、浏览器操作、中文支持等重重挑战。
3. 如何发布工具条
工具条开发完成并不能直接提供给用户使用,只有把工具条组件及相关文件打包成用户可以直接使用的安装包后,用户才可以直接使用。这个过程通常被称为工具条打包发布。
完成《工具条软件需求说明书》中所描述的功能开发,同时打包发布工具条后并在Windows 98、Windows 2000、Windows XP、Windows 2003下测试通过并后,软件工程师才算最终修得正果。
IE浏览器工具条发布有两种方式:一种是打包成EXE或MSI安装执行文件进行发布,另一种是打包成CAB包实现Web自动下载安装。软件工程师在制作这两种安装包时,所需要的打包软件是不一样的。在制作安装执行文件时,我们可以使用Install Shield、Wise等专业打包软件制作。在制作CAB自动下载安装时,我们可以使用Cabinet Manager、WinCAB等CAB打包工具。Windows在系统目录自带了一个CAB制作工具IExpress(下图是IExpress启动后的界面),网络上也可以下载IExpress 中文汉化版本。假如对命令行操作情有独钟,我们可以使用Windows自带的makecab.exe命令。

那么这两种安装方式除了制作过程不一样之外,在使用过程中有什么差异呢?下面我们来了解一下这个问题。
对于第一种安装执行文件方式,就像QQ、BitComet等软件一样,用户需要从网络上下载并运行安装才可以进行,在安装过程中会有安装提示界面,用户通过点击“下一步”根据安装向导完成工具条的安装。
使用第二种安装方式时,CAB文件需要通过Object元素内嵌到网页代码中。当用户浏览这个页面的时候,CAB将根据IE的安全设置规则进行提示或自动下载安装。在有安装提示的时候,用户只要点击安装ActiveX控件即可完成安装,整个下载安装过程没有下载进度条,也没有安装向导,自动完成下载安装。那么有的读者会问,自动下载安装什么时候有提示?什么时候没有提示?能不能不提示就自动下载安装?这个我们留待“代码数字签名”章节描述。
这两个打包发布方式的安装方式有比较大的区别。主要表现在以下几个方面:
1) 用户体验是不一样的。对用户而言,安装执行文件方式是个主动的过程;而自动下载安装方式更多是被动接受的过程。
2) 被安装的机会是不一样的。由于安装执行文件方式是主动的过程,用户只有了解后才会安装;而自动下载安装方式有如其名,很轻易在用户不知情的情况下安装。
3) 安装过程是不一样的。安装执行文件方式往往提供了傻瓜安装向导;而自动下载安装方式则一般没有任何显式安装过程。
4) 卸载难易程度是不一样的。一般安装执行文件方式可以在程序菜单或删除程序中将安装的工具条卸载掉;而自动下载安装方式往往不在删除程序中提供删除方式,需要手动通过IE本身提供的功能进行删除。
5) 文件大小是不一样的。由于安装执行文件方式包含了安装过程,其包含安装向导需要的内容,所以此类工具条安装文件的大小要比CAB格式的文件大一倍或以上。
6) 对代码数字签名的依靠是不一样的。安装执行文件方式是主动的过程,不需要代码数字签名也没有影响;而自动下载安装方式在目前操作系统应用情况下,必须依靠有效的合法数字签名才可以进行,否则对Windows大多数操作系统而言,则安装不了。
当然,越来越多的工具条发布者更乐意同时选择两种工具条打包发布方式,让用户自由选择。
发布工具条前,有一件必须高度重视的事情需要去做。那就是把打包完成的安装包在不同操作系统、不同补丁、不同IE版本下进行严格测试。笔者在Windows 2000 Professional操作系统上以及IE 5.0版本下安装一个非常知名网站工具条时,一启动IE浏览器就导致系统崩溃。对于用户而言,这是多么致命的伤害啊!
4. 代码数字签名
什么是代码数字签名?代码数字签名软件开发商使用自己的合法数字证书添加一个数字签名在其代码上,签名后的代码不能被篡改或破坏,否则已有的签名失效。这样,用户下载或安装时就可以确信此代码开发者的真实身份,并且确信此代码没有被非法篡改和被破坏。代码数字签名相当于纸面合同签字,但谁来认证我们签字的真假呢,这就需要有权威的证书机构给我们颁发合法的数字证书。
软件开发商可以使用代码签名证书来签名EXE、DLL、CAB、OCX、CLASS、Java Applets 等多种代码。
IE浏览器怎么和工具条CAB安装包的代码签名结合起来呢?首先,IE浏览器判定此CAB安装包是否有数字签名标志;假如有数字签名,则验证签名时用的数字证书是否是IE认可的数字证书链上的证书,假如不是,则等同认为是没有数字签名。
然后IE查找当前站点所在的安全区域,读取Internet选项中安全区域关于“下载未签名的ActiveX控件”、“下载已签名的ActiveX控件”、“运行ActiveX控件和插件”的设置(如下图所示)。根据这些设置分别执行禁用、提示或启用的动作。我们也许会问,能否不提示用户而直接安装CAB安装包呢?实际上这就和上面所说的数字签名和IE安全设置有关,假如用户当前访问网站的安全区域设置为“启用”,则就不会有提示。

这里面有个很有意思的事情。默认安装后的IE浏览器认可哪些机构颁发的数字证书?我们通过IE的Internet选项下的内容中,点击证书按钮,我们可以看到IE浏览器默认的受信任的根证书颁发机构名单。那么假如我们用北京数字证书认证中心、广东省数字证书认证中心颁发的数字证书对IE工具条代码进行数字签名,IE能否认可?目前情况下,默认安装后的IE是不认可的。所以,对IE工具条进行代码数字签名,国际上用的最多的是Verisign颁发的数字证书。
那么,我们得到Verisign颁发的数字证书后,我们怎么对代码进行签名。微软提供了专用的文件签名工具(Signcode.exe)。运行Signcode.exe 后,进入代码数字签名向导界面,按照界面提示即可完成数字签名。我们可以使用Windows命令程序chktrust.exe来查验已经签名的代码信息。对经过合法数字签名后的代码进行验证,其提示信息包括软件名称、发行者信息、数字证书颁发者等信息(如下图所示)。
