Почему IHTMLDocument2 не равен IHTMLDocument2.body.document? - PullRequest
0 голосов
/ 20 июля 2011

Почему следующий doc2 отличается от doc22?

IHTMLDocument2 doc2 = (pDisp as IWebBrowser2).Document as IHTMLDocument2;
IHTMLDocument2 doc22 = doc2.body.document as IHTMLDocument2;
bool isequal = Marshal.GetIUnknownForObject(doc2) == Marshal.GetIUnknownForObject(doc22);
//Here, isequal is false. Why?

1 Ответ

0 голосов
/ 18 октября 2011

Для меня наиболее вероятным объяснением является то, что разные объекты-оболочки создаются для одной и той же вещи.Кто знает, как MSHTML управляет этим внутри.Пока ((pDisp as IWebBrowser2).Document as IHTMLDocument3).documentElement as IUnknown == (((pDisp as IWebBrowser2).Document as IHTMLDocument2).body.document as IHTMLDocument3).documentElement as IUnknown мир в порядке;)

...