如何使用C#的IHTMLDocument6或其他IE 8接口?

时间:2011-05-27 20:17:14

标签: c# internet-explorer com-interop

我正在尝试从我的IE BHO访问IHTMLDocument6.documentMode属性,但是我的计算机上找不到任何mshtml程序集中的接口。

我已经尝试将界面的接口定义混合在一起:

[Guid("30510417-98b5-11cf-bb82-00aa00bdce0b")]
[TypeLibType(4160)]
public interface IHTMLDocument6
{
    [DispId(1104)]
    float documentMode { get; }
}

我可以成功地将文档对象强制转换为此接口,但是我没有得到对documentMode属性有意义的值。

在哪里可以找到包含IHTMLDocument6接口的mshtml版本,或者要使用的接口定义的正确版本?或者还有其他方法我应该这样做吗?

感谢。

3 个答案:

答案 0 :(得分:1)

您始终可以使用latebinding并执行Type.Invokemember

http://msdn.microsoft.com/en-us/library/66btctbe.aspx

答案 1 :(得分:0)

您可以从here获取IE9的标题和库。如果该链接被破坏,我从here获得了它。

您可以从pinvoke.net获取互操作示例。在MSHTML上它看起来很精简,但是一旦弄明白就可以添加它。

答案 2 :(得分:0)

这是正确使用的代码

[Guid("30510417-98b5-11cf-bb82-00aa00bdce0b")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
public interface IHTMLDocument6
{
    [DispId(1104)]
    object documentMode { get; }
}

{/ 1}}是P / Invoke中的VARIANT。以上也使用IDispatch,最大限度地减少了麻烦。