您所在的位置:每日生活网 > 电脑网络 > 技术语言 > ASP > 正文

IE里地探索之定制浏览器好助手(上2)
http://www.hao365.net 发布:2007-5-23 1:49:08 来自:转载

IObjectWithSite 接口
  从这个高层来看待浏览器助手对象,一个概念就清晰的显现出来了:BHO 是一个动态连接库 (DLL),它能附着在 Internet Explorer 的一个新实例上,在某些情况下,也能附着在 Windows Explorer 的实例上。这样的模块能通过容器的现场与浏览器建立联系。


  通常,现场是指处于容器和每个被包含的对象之间的中介对象。容器通过它管理包含的对象,并随后使对象的内置功能可用。这种容器和对象之间的基于现场的关系涉及到在容器一端实现像 IOleClientSite 这样的接口,以及在对象一端实现像 IOleObject 这样的接口。通过调用 IOleObject 上的方法,容器使对象知道它的宿主环境。

  当容器是 Internet Explorer (或支持 Web 的 Windows Explorer),从性能的角度考虑,需用将这种通讯模式降低到必要的程度。现在对象需要实现更简单更小的叫作 IObjectWithSite 的接口。它只需提供两个方法。 


  表 3. IObjectWithSite 接口定义

  对 BHO 的唯一严格要求就是实现这个接口。注意你要避免从前面所说的函数中返回 E_NOTIMPL。你要么不去实现这个接口,要么正确地编写它的方法。

编写浏览器助手对象
  浏览器助手对象是进程内的 COM 服务程序,那么还有什么比 Active Template Library (ATL)更适合用来编写它呢?选择 ATL 的另一个原因是它已经默认提供了一个很好的 IObjectWithSite 接口。还有,在 ATL COM 向导内置支持的预定义对象类型中,有一个 Internet Explorer 对象,正好是 BHO 的对象类型。实际上,ATL Internet Explorer 对象是一个简单的对象。就是说,一个 COM 服务程序,支持 IUnknown 和自我注册加上 IObjectWithSite。如果你在 ATL 项目中添加一个这样的对象,并引用 CViewSource 类,你可以从向导中得到以下代码:

  class ATL_NO_VTABLE CViewSource :

   public CComObjectRootEx,

   public CComCoClass,

   public IObjectWithSiteImpl,

   public IDispatchImpl
              &LIBID_HTMLEDITLib>

  像你看到的那样,向导已经使这个类继承 IObjectWithSiteImpl,它是提供 IObjectWithSite 的基本实现的一个 ATL 模板类。(参见 Microsoft Visual Studio 98 中 ATL\INCLUDE 目录下的 atlcom.h。) 通常不需要重载 GetSite() 成员函数。相反,GetSite() 的已有代码常常(即使并不总是)需要按用户要求来重写。实际上,ATL 只是简单地将 IUnknown 指针保存到一个叫 m_spUnkSite 的成员变量里。

  在文章的其余部分我们将讨论一个相当复杂的 BHO 例子。这个对象只附加到 Internet Explorer 上,并显示一个带有所查看的页面源代码的文本框。当你改变页面时,此代码窗口自动更新,并且,在 Internet Explorer 显示的不是一个 HTML 页面时变成灰色。你对 HTML 代码的任何修改会立即在浏览器中反映出来。动态 HTML (DHTML) 使这种魔术成为可能。这样的代码窗口可以隐藏,并在以后通过热键召回。可见时,它同 Internet Explorer 分享整个桌面工作区,并能像图 3 所示的那样适当地改变尺寸。 


  图 3. 工作中的浏览器助手对象。它附着在 Internet Explorer 上并显示所查看页面的源代码。它同时允许你修改代码 (但不能保存)。

  这个例子的关键点是访问 Internet Explorer 的浏览机制,而它不过是 WebBrowser 控件的一个实例。这个例子可以分为以下五个主要步骤:

  1、检测谁加载了对象,是 Internet Explorer 还是 Windows Explorer;

  2、获得处理 WebBrowser 对象的 IWebBrowser2 接口;

  3、捕获 WebBrowser 的特定事件;

  4、访问正在查看的文档,确定它是 HTML 文档;

  5、管理显示 HTML 源代码的对话框窗口。

  第一步在 DllMain() 编码时完成。然而,我们是在 SetSite() 中获得指向 WebBrowser 对象的指针。下面我们来看一看这些步骤的详细内容。

Google
请把上面文章的地址发给你QQ上10个好友!!大家一起来看看吧~!

 

1.凡本网注明来源为“每日生活网”的所有作品,包括文字与图片,请注明转载来源出自本站。未注明者视侵权,本网将依法追究法律责任。
    2.凡注明"来源:xxx(网络、转载)"的作品,均转载自其它媒体,本网转载的目的在于传播更多信息,此类稿件并不代表本网观点,本网不承担此类稿件侵权行为的直接责任及连带责任。
    3. 如因作品内容、版权等需要同本网联系的,请在作品在本网发表之日起30日内联系,否则视为放弃相关权利。
    4.网站转载信息(包括资讯、打折等)如与事实有出入请与本站联系,我们将第一时间更正。如造成损失本站不承担任何责任。

热点信息

资讯排行

社会

北京

娱乐

奇图

数码

体育

邯郸农行管库员盗走5100万 公安部悬赏5万缉拿
形形色色的社会写真实拍
马向景北京被捕 任晓峰在逃
少女治感冒被要求脱裤遭医生摸下身(图)
普通百姓发现100元内玄机
福建漳州安监副局长就酒后打弱女子道歉
长沙一火车倒车时不慎出轨撞入平房
全国武警部队5-1起正式换发“07式”车辆号牌
辽宁特殊钢厂钢水冲入车间致32人遇难
女儿病逝后无钱火化 母亲将其尸体抛入运河[图
居民楼热水器突然爆炸 19岁女模被烧成重伤
奥运官方票务网站首日订单过5万 已预订25万张
“藏秘排油茶”广告引发行政案开审 将择日宣判
“城管抓小姐”涉嫌色情刻画
北京至沈阳动车组遇故障旅客被闷虚脱
2008年中国代表团奥运领奖服结束作品征集工作
北京地铁五号线开始试运行 车厢可收看奥运直播
第二期“志愿中国·人文奥运” 网络大讲堂4月
07青少年公益电影节即将开幕 即日起接受志愿家
国际残奥委会克雷文主席高度评价残奥会筹办工
范冰冰片场换裙子挖鼻孔
央视五大主持婚变内幕(图)
女明星被歌迷强行扒掉衣服全过程!
女明星衣服意外脱落事件
五部激情床戏让周迅由玉女变熟女
蔡依林用身体唱歌演唱会春光无限
黄秋生背妻夜店勾搭美女 二人同车态度亲昵[图
台湾综艺节目麻辣出位
成龙拍《火并时速3》牺牲大 惨被“探肛”(图)
邬君梅为艺术全裸献身[图]
医院妇科检查暴惊人一幕(太无耻了)
某美院人体绘画现场实拍
让人哭笑不得的创意(超级多组图)
上海最开放的一条街据说不是一般的前卫
绝对经典的拍摄姿势(超级暴笑)
看了笑掉大牙的趣图(50图)
街头惊现性骚扰全程抓拍[图]
偷拍特殊服务行业内景(组图)
脱光了才能参观艺术展!
看得腿都软了!街上竟然出现如此恐怖的一幕[图
IT巨头纷争视频通信蛋糕 谁能掘得第一桶金?
新网赔偿方案出台 每受损网站将获赔50兆邮箱
竞争失效成电信业致命伤 重组是最经济运作
伟创力年收入189亿美元 预计明年将突破200亿
欧盟打造KM3微中子天文望远镜 到海底研究太空
CDMA2000流动服务将在港展开 公开拍卖发放频谱
天地数码入选常州数字电视转换 投资总额6亿元
陈凯博士:电信管制改革要以国家战略为依托
奚国华讲话透露发牌重组方向 5.17或可能公告
俄媒体:爱沙尼亚政府网遭黑客攻击曾短暂瘫痪
姚明霍霍磨刀拜师学艺 火箭下赛季以不变应万变
舒畅:结果比过程重要 打出特点城南一和并不可
南美新星演连过4人好戏 国青热身0-1负乌拉圭国
实德频繁选援背后 两原因促使林乐丰与邦帅摊牌
比卢普斯感觉客场晋级更好 公牛叹关键失误太多
曼联三大现役传奇各具悲情 吉格斯倒在第一人边
切尔西冠军辉煌下的失意身影 天才为何难成巨星
德罗巴C罗谁该是赛季最佳 魔兽出笼撕破曼联之
英足坛刷新尴尬纪录 倒霉主帅上任10分钟就下课
大将暗示阿森纳逆流暗涌 温格亨利恐危及豪门根
网友意见留言板
版权所有2000-2008 © 每日生活网 客服热线:13366868613  网站备案:京ICP备06036570
Copyright © 2005 - 2007 Hao365.NET Inc. All Rights Reserved