http://www.cppblog.com/bigsml/archive/2008/04/18/47547.html
操作MSHTML文档
通常HTML分析和浏览器自动化程序都需要分析网页的结构,找到需要操作的元素。这需要对网页的结构进行分析,找到目标元素的标识方法。 一些常用的操作包括:
- 设置HTML元素的属性,例如html、style、value等等。注意有些属性是只读的,甚至是程序无法访问的(例如input元素在类型为文件时其value属性不可访问)。
- 分析网页的结构来保存网页数据,例如拆取Web 页一文介绍的方案(http://www.microsoft.com/china/msdn/Archives/workshop/scrape.asp)
- 处理HTML元素的事件。这需要分析浏览器控件中的MSHTML文档对象,定位被操作的元素,以及在元素的连接点上挂接自定义的事件处理程序(http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/mshtml/tutorials/sink.asp)。
- 添加/删除HTML元素。注意设置有时设置outHtml属性并不能正确创建元素(http://support.microsoft.com/kb/185140),一个的方法是用HTMLDocument对象的CreateElememt方法。
- 调用HTML元素的方法,这和在脚本中操作HTML类似。可操作的元素/接口可以参考Interfaces and Scripting Objects(http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/mshtml/reference/ifaces/interface.asp),操作方法可以参考Introduction to Dynamic HTML(http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/mshtml/reference/ifaces/interface.asp)
- 以上的功能都可以通过直接在网页中加入脚本实现(http://support.microsoft.com/kb/185128),而且脚本也可以通过应用程序实现的扩展接口来和应用程序本身交互。另外,脚本还可以被用来自定义一些事件,例如在需要重载自定义的 ShowModalDialog的时候就可以用IDispatchEx给window对象添加一个属性,其值为一个自定义的 ShowModalDialog函数(http://groups.google.com/group/microsoft.public.inetsdk.programming.webbrowser_ctl/browse_thread/thread/e5eeb4a9111b16af/4bc2709aeb2bb444?lnk=raot),也可以用加入脚本的办法来捕获网页中的错误(http://support.microsoft.com/kb/317024)。
在页面包含框架的时候,可能需要跨框架访问HTML文档。可以通过查询框架元素所支持的IWebBrowser2接口或者IHTMLWindow2接口来访问框架中的文档(http://support.microsoft.com/kb/196340),但是也有可能因为安全设置而无法访问(http://support.microsoft.com/kb/167796)。
BHO基础
http://www.cppblog.com/bigsml/archive/2008/12/04/68573.html
VC知识库IE知识
http://www.vckbase.com/document/listdoc.asp?sclsid=1711