您现在的位置: 软界网资讯中心软件技术软件开发.NET > 资讯显示
   行业新闻|互联网|信息安全|软件评测|游戏娱乐|人才新闻|展会信息|软件技术|精英访谈|公司新闻      
Internet Explorer编程简述(一)
2007-10-22 23:27:15      网友评论       阅读次数 点此评论
    

  一直对Microsoft Internet Explorer编程非常感兴趣,曾花了不少时间琢磨,也与众多网友讨论过问题,2000年将心得写成一篇《TWebBrowser编程简述》,发表在自己的个人主页“阿甘的家”上,得到了不少网友的回应,也被许多网站转载。此后相当长的时间内不断回答网友的提问,收获良多。

  其间正是多窗口浏览器全面开花的日子,无奈手头事情太多,我的作品Multiple iExplorer也一直未能问世,至今遗憾。后来常与GoSurf的作者交流学习,替他解决了不少问题,也从他那里学到许多。如今GoSurf有了比较固定的用户群,有我一份功劳,算是一种安慰吧,他也一度在GoSurf官方主页上将我列为核心技术支持,但我后来因为工作和学习的关系很少再和他联系,实在惭愧。

  回头再看当时的文章,错误实在不少,认识也比较浅薄,有些问题更是一直没有得到解决,所以我觉得有必要在前文的基础上,花点时间将我积累的关于Internet Explorer编程的问题比较完整地写出来,希望对自己有个交代,对大家有一些帮助。

  是为序。

  Internet Explorer编程简述(一)WebBrowser还是WebBrowser_V1

  你的机器上总是存在着“两”个WebBrowser,一个叫WebBrowser,另一个叫WebBrowser_V1,其CLASSID如下:


  CLASS_WebBrowser: TGUID = ''{8856F961-340A-11D0-A96B-00C04FD705A2}'';
  CLASS_WebBrowser_V1: TGUID = ''{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}'';


  它们分别对应的接口是IWebBrowser2和IWebBrowser。问题是我们该用哪一个呢?
  按照微软的推荐,应该尽量使用前者,因为后者是为兼容Internet Explorer 3.x而保留的(尽管它能够响应来自Internet Explorer 3.x、4.x、5.x、6.x的事件),相应的IWebBrowser和IWebBrowserApp接口也应抛弃。

  由于Internet Explorer 3.x年代久远,导致WebBrowser_V1提供的事件少得可怜,但值得一提的是它提供的两个事件OnNewWindow和OnFrameBeforeNavigate有着与OnBeforeNavigate几乎相同的参数:


  OnBeforeNavigate(
  BSTR URL,
  long Flags,
  BSTR TargetFrameName,
  VARIANT* PostData,
  BSTR Headers,
  BOOL FAR* Cancel)


  OnNewWindow(
  BSTR URL,
  long Flags,
  BSTR TargetFrameName,
  VARIANT* PostData,
  BSTR Headers,
  BOOL FAR* Processed)

  OnFrameBeforeNavigate(
  BSTR URL,
  long Flags,
  BSTR TargetFrameName,
  VARIANT* PostData,
  BSTR Headers,
  BOOL FAR* Cancel)

  所以使用WebBrowser_V1使得我们的浏览器在有新窗口打开时能够轻易捕捉到其URL及相关的数据,如果将Processed设置为TRUE,则可取消新窗口的弹出。同样,处理Frame也比在WebBrowser中来得容易。

  但WebBrowser_V1的致命弱点是它不支持高级接口,如IDocHostUIHandler,即便我们实现了IDocHostUIHandler接口,也不会被WebBrowser_V1调用。所以希望在自己的浏览器中实现XP的界面主题、扩展IE的DOM(Document Object Model)等高级控制的话,就肯定不能选择WebBrowser_V1了。

  处理新窗口实在是很麻烦的一件事,不知道微软为什么在新版本的OnNewWindow2事件中去掉了URL这样的参数,而且OnNewWindow2事件不能完全捕捉到所有的新窗口打开。但如果安装了Windows XP SP2的话,好处又回来了。

  Windows XP SP2对Internet Explorer 6作了升级,并且提供了一个新的事件OnNewWindow3,它在OnNewWindow2事件之前发生,也包含了让我们能够加以过滤处理的新窗口的URL等参数,再加上INewWindowManager接口,就是实现Windows XP SP2中过滤广告窗口功能的基础。

      来源: 作者:
【评论查看】
更多关于 Internet Explorer编程简述(一)  的新闻
Internet Explorer编程简述(一) 2007-7-5 5:39:17
      
软件供应
热点新闻
·《春秋Q传》全新师徒系统即将上线
·炫出我的个性!QQ皮肤绘制全程实录
·还原美丽:Photoshop美女磨
·Photoshop实例:调出MM清
·美"国安小黑屋"曝光:监视全球网民
·CAT开出48亿罚单 华为高层赴泰
·"中国黑客门"调查:被攻击国家三缄
·Adobe将推在线版免费Photo
·防QQ密码被盗的十项技巧
·Google个性化缩影 iGoog
热门评论
·惠普连续5个季度压制戴尔 稳居PC
·Photoshop实例:调出MM清
·起价3000元 龙芯电脑首次接受消
·我国制造业企业实施ERP存在的误区
·Adobe将推在线版免费Photo
·西门子开展举报行动 已接到部分举报
·微软否认"Vista可能引起网络性
·防QQ密码被盗的十项技巧
·还原美丽:Photoshop美女磨
·网游防沉迷成全Q版游戏走热 厂商连
关于软界 | 会员权限 | 使用帮助 | 友情链接 | 广告投放 | 网站建议 | 联系软界 | 软件开发 | 网站建设
版权所有 中国软界项目交易网2006-2007 沪ICP 证 06014630 号 MSN:softwelt@hotmail.com 在线咨询
本网站所有信息,版权为发布者和本网站共同所有,未经书面许可不得转载复制