
- Код: Выделить всё
Dim Creator As New HTMLDocument, doc as IHTMLDocument2
Set doc = Creator.createDocumentFromUrl("c:\1.htm", "null")
(этот код прекрасно работал).
Написал в .NET:
- Код: Выделить всё
Dim Creator As New mshtml.HTMLDocumentClass, doc as mshtml.IHTMLDocument2
doc = Creator.createDocumentFromUrl("c:\1.htm", "null")
На последней строке вывалилось NullExceprion. Это которое в VB6 называется "Object reference not set". Проверил Creator - совсем не нафинг. Проверил его проперти - есть проперти. createDocumentFromUrl - NullException.
Копался в файловой системе. Перепроверял разрешения. Бился башкой об стенку.
Потом на одном маленьком форуме нашёл: методом write впишите в объект хоть что-нибудь (минимальное "<html></html>"), и он заработает.
Вписал.
- Код: Выделить всё
Dim Creator As New mshtml.HTMLDocumentClass, doc as mshtml.IHTMLDocument2
CType(Creator, mshtml.IHTMLDocument2).write("<html></html>")
Creator.Close()
doc = Creator.createDocumentFromUrl("c:\1.htm", "null")
Заработало.
Спрашивается - ну какого фига происходят такие отклонения в работе компонентов через Interop? И как кодить что-то хоть чуточку менее тривиальное, чем "Hello, world", если это натуральное минное поле?