关于MSHTML

本文翻译自http://msdn.microsoft.com/workshop/browser/mshtml/overview/overview.asp

MSDN Home >  MSDN Library >  Programming and Reusing the Browser >  Overviews/Tutorials

关于MSHTML

訪问动态HTML(DHTML)对象模型的全部接口以IDispatch为基类,并且也是被用于脚本的对象模型的基础。因此对要操纵对象模型的不论什么人来说都非常重要的是熟悉定义在动态的HTML介绍的概要和MSHTML包括的对象模型參考中的结构和功能。

MSHTML參考接口和脚本对象这一节说明了对象怎样在DHTML对象模型里面映射到接口。举例来说,使用这一个映射,你能够看到IHTMLDocument2接口映射到文档对象。对接口的进一步的研究说明了怎样通过get_put_方法訪问对象的属性。对象的方法映射到可用的接口的方法,并且事件能够用标准的对OLE自己主动化连接点来捕获。

怎样使对象模型接口的样例的演示在Colbtn、Driller和WalkAll演示样例中,这些演示样例在Colbtn演示样例源码页面Driller演示样例源码页面WalkAll演示样例源码页面上。

  • 使用接口的建议
  • 获得文档接口
  • 使用文档接口
  • 相关的主题

使用接口的建议

通常,在文档中能够用脚本完毕的不论什么事都能够通过使用接口操纵对象模型来完毕。因此推荐在写使用对象模型接口的代码之前, 开发人员应该在一个 HTML文档里面使用脚本设计功能原型。

下列HTML样例说明怎样用脚本导航文档的all集合并且获得文档的每一个元素的标签名字。等价的使用对象模型接口的Microsoft (R) Visual C++(R)的代码演示样例在Driller演示样例源码页面WalkAll演示样例源码页面上能够找到。

样例

<HTML>

<HEAD>

<TITLE>Page Title</TITLE>

</HEAD>

<SCRIPT LANGUAGE="JavaScript">

function Loaded()

{

var c = document.all.length;

var i;

for(i = 0; i < c; i++)

{

spanTAGS.innerHTML = spanTAGS.innerHTML + document.all.item(i).tagName + "<BR>";

}

}

</SCRIPT>

<BODY >

<SPAN id="spanTAGS"></SPAN>

</BODY>

</HTML>

获得文档接口

要開始使用对象模型接口,就要从文档获得IHTMLDocument2接口。一旦你有了这个接口,你就能存取文档中全部的元素。怎样获得文档接口依赖于你的应用程序的实现。下列场合都须要以不同的方式获得文档接口。

  • 集成MSHTML时
  • 集成浏览器控件的一个实例时。
  • 从一个网页中包括的一个Microsoft ActiveX(R)控件。

集成MSHTML时获得文档接口

当集成一个MSHTML对象的时候,使用 CoCreateInstance创建HTML文档对象。 一旦创建了对象,你能够调用它的QueryInterface 方法,请求IID_IHTMLDocument2。WalkAll演示样例源码页面的WalkAll演示样例说明了实现方法。

集成浏览器控件时获得文档接口

当集成浏览器控件的时候,运行下列步骤获得文档接口:

  1. 调用 IWebBrowser2::get_Document 获得文档的 IDispatch 接口。(译者注:MFC的CHtmlView的GetHtmlDocument方法,浏览器控件的Document属性或者DHtmlEdit控件的DOM属性也能够用于获取文档接口)
  2. 调用在前面步骤中获得的IDispatch指针的的QueryInterface,请求IID_IHTMLDocument2。

从ActiveX控件获得文档接口

ActiveX文档的存取动态HTML这一节解释了怎样从ActiveX (R)控件获得文档接口。

使用文档接口

使用文档接口

一旦你获得了文档接口,你就能够使用不论什么一个IHTMLDocument2接口获得或改动文档的属性。这通常包括从文档包括的不同的元素中得到一些IHTMLElementCollection接口。

一个很普遍的集合对象是all集合对象。all集合对象是通过使用IHTMLDocument2::all 方法获得的。 这种方法返回一个包括文档的全部元素的IHTMLElementCollection接口。然后你能够使用IHTMLElementCollection::item方法枚举元素。 IHTMLElementCollection::item方法为你提供一个能够用于调用QueryInterface,请求IID_IHTMLElement的IDispatch指针。这将会返回给你一个你能用来为个别的元素获得或设置信息的IHTMLElement接口指针。

大多数的元素提供一个接口操纵那个特定的元素。这些元素相关的接口名字具有IHTMLXXXXElement的格式,这里XXXX是元素的名字。要获得元素的相应接口,能够在IHTMLElement接口上调用QueryInterface,请求被须要的元素相关的接口。举例来说,img 元素提供一个IHTMLImgElement接口以可能用来明白地操纵img元素。假设要查看可用的元素相关的接口列表,能够查看接口和脚本对象的接口列表。

相关的主题


时间: 2024-10-10 05:39:18

关于MSHTML的相关文章

mshtml

C:\Windows\System32\mshtml.dll 1.VS2010中引用Microsoft.mshtml之后,要修改这个引用的"嵌入互操作类型"为False. 2.调用doc.write方法的时候必须通过IHTMLDocument2接口来调用,否则报错"错误的类型",在google上搜"type mismatch HTMLDocument write"发现这篇帖子http://www.vistax64.com/powershell/9

c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2 .

c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2 分类: c# 2013-02-06 15:18 3008人阅读 评论(0) 收藏 举报 可以实现例如通过应用程序操作google搜索,用户输入要搜索的内容,然后在google中搜索:可以自动点击网页上的按钮等功能 1. 加入对Microsoft Internet Controls的引用:    2. 加入对Microsoft HTML Object Library的引用: (要引入Microsoft

关于引用mshtml的问题

今天看了个验证码识别的代码,其中引用到了mshtml.dll,找了半天原来就是microsoft.mshtml.dll.查这个dll的时候还发现了好几篇关于这个dll添加问题的文章.顺便看了下,原来这个dll有三个,添加引用时要注意了.    第一篇文章:    1.添加引用的问题    一般在开发环境下会在三个地方存有microsoft.mshtml.dll文件.所以在添加引用时,也会出现三个看似一样的项.对于开发者来说,引用其中任何一个都不会影响到正常的开发.但问题会出在软件发布之后!在客户

如何MSHTML命名空间解析HTML文件(MSHTML::IHTMLDocument2Ptr 提示错误)

1.创建Win32或MFC工程. 2.在预编译或需要使用MSHTML命名空间的头文件中添加以下语句: #include <atlbase.h>    #include <Mshtml.h> #import <mshtml.tlb> 3.前置条件设置完成,现在可以开始使用MSHTML访问里面的智能指针了. 例: MSHTML::IHTMLDocument2Ptr pHTMLDoc2; MSHTML::IHTMLDocument3Ptr pHTMLDoc3; …… 然后解析

ActiveX(四) mshtml 命名空间 重要接口简介

在上一篇随笔 ActiveX(三)ActiveX 调用 Js 中,我们已经可以获得js中window对象的强类型接口.即 mshtml.IHTMLWindow2 ,通过该接口.我们可以调用js函数.那么我们再试一试其他的方法呢,看看结果是否符合预期: private void btnAlert_Click(object sender, EventArgs e) { if (this.window2 != null) { this.window2.alert("C#CodeAlert:"

未能加载文件或程序集“Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。

问题: 经过一系列折腾,这里提出一个解决方案,不一定适用于所有系统,仅供参考(具体原理没研究) 运行软件时提示:未能加载文件或程序集“Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项.系统找不到指定的文件. 解决: 1.这里安装一个Microsoft Office 就解决了,注意安装Office 工具(原理没研究,估计应该是环境没配置好),这里只是一个解

.NET Interop.SHDocVw和MSHTML引用如何操作

Interop.SHDocVw:引用Com:Microsoft HTML Object Library 和 Microsoft Internet Controls MSHTML:引用-->COM-->Microsoft HTML Object Library

Microsoft.mshtml.dll 添加引用及类型选择错误问题解决办法

在比较早的文章中,提到使用 Microsoft.mshtml.dll 进行模拟浏览器点击的例子. 1.添加引用的问题 一般在开发环境下会在三个地方存有microsoft.mshtml.dll文件.所以在添加引用时,也会出现三个看似一样的项.对于开发者来说,引用其中任何一个都不会影响到正常的开发.但问题会出在软件发布之后!在客户的机子上运行时,通常会提示文件的签名不正确,无法加载.解决的方法就是删除现在对mshtml引用.重新选择正确引用.就是选最下面那个.路径是:X:\Program Files

mshtml拷贝图片文件

private Image GetWebImage(WebBrowser WebCtl, HtmlElement ImgeTag)        {            HTMLDocument doc = (HTMLDocument)WebCtl.Document.DomDocument;            HTMLBody body = (HTMLBody)doc.body;            IHTMLControlRange rang = (IHTMLControlRange)