Как я могу использовать IHTMLDocument6 или другие интерфейсы IE 8 из C #? - PullRequest
1 голос
/ 28 мая 2011

Я пытаюсь получить доступ к свойству IHTMLDocument6.documentMode из моего IE BHO, но этот интерфейс не определен ни в одной из сборок mshtml, которые я могу найти на моей машине.

Я пытался взломать вместеопределение интерфейса для интерфейса:

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

Я могу успешно привести объект документа к этому интерфейсу, но у меня нет значения, которое имеет смысл для свойства documentMode.

Где я могу найти версию mshtml, которая включает интерфейс IHTMLDocument6, или правильную версию определения интерфейса для использования?Или есть какой-то другой способ, которым я должен делать это?

Спасибо.

Ответы [ 3 ]

1 голос
/ 28 мая 2011

Вы всегда можете использовать привязку и делать Type.Invokemember

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

0 голосов
/ 08 сентября 2011

Это правильный код для использования

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

A VARIANT - это object в P / Invoke.Выше также используется IDispatch, который минимизирует суету.

0 голосов
/ 28 мая 2011

Вы можете получить заголовки и библиотеки для IE9 от здесь . Если эта ссылка не работает, я получил ее от здесь .

Вы можете получить примеры взаимодействия с pinvoke.net . На MSHTML это кажется довольно тонким, но вы можете добавить его, как только разберетесь.

...