Dim doc as IHTMLDocument
Set doc = New HTMLDocument
doc.write htmlstring
Antonariy писал(а):Конечно, MSHTML. В .net есть аналог.
- Код: Выделить всё
Dim doc as IHTMLDocument
Set doc = New HTMLDocument
doc.write htmlstring
Тогда write работать не будет... По крайней мере в COM...Ну как HTMLDocument объяви...
GSerg писал(а):Ну как HTMLDocument объяви...
Dim doc As mshtml.HTMLDocument
doc = New mshtml.HTMLDocument
doc.write(mInfo.GetCalls("13.02.2006", "14.02.2006"))
Я так понимаю, IHTMLDocument является "накопительным" для всех остальных от 2 до 5, и объявлять нужно именно им
Vinechka писал(а):Засовывать HTML в WebBrowser не получится, так как имеющийся там JScript вызывает ошибки и появляются окна, которые вообще нафиг не нужны.
GSerg писал(а):SebasVinechka писал(а):Засовывать HTML в WebBrowser не получится, так как имеющийся там JScript вызывает ошибки и появляются окна, которые вообще нафиг не нужны.
С законом не поспоришь, но как же в таком случае в IHTMLDocument, IHTMLElement и т.п. от версии к версии появляются новые свойства и методы? Тем более, что объектная структура mshtml это не dll, а tlb. Разве нельзя создать интерфейс новой версии, унаследовать его в IHTMLDocument и скомпилировать в новый tlb со старыми progid? Старые приложения по идее могут продолжать его использовать, потому что нужные им интерфейсы уже давно унаследованы, а новые их не волнуют.tyomitch писал(а):Накопительный интерфейс.
Но это не так. По законам COM однажды объявленные интерфейсы никогда не пересматриваются и не дополняются.
Antonariy писал(а):смею предположить, что и clsid интерфейсов остались те же
HKEY_CLASSES_ROOT\Interface\{3050F1FF-98B5-11CF-BB82-00AA00BDCE0B}\(По умолчанию)=IHTMLElementCLSID у интерфейсов в принципе не бывает. Они есть только у классов.
Нет, пока не попытаются вызвать метод, который не реализован в старой версии.Что касается законов COM, то в твоём представлении проги, скомпилированные с новыми версиями TLB, должны неотвратимо падать со старой версией DLL?
Antonariy писал(а):HKEY_CLASSES_ROOT\Interface\{3050F1FF-98B5-11CF-BB82-00AA00BDCE0B}\(По умолчанию)=IHTMLElementCLSID у интерфейсов в принципе не бывает. Они есть только у классов.
Ну не clsid, а Interface, не важно.
Antonariy писал(а):Рискну повторить вопрос. Как же в таком случае в IHTMLDocument, IHTMLElement и т.п. от версии к версии появляются новые свойства и методы?
Е-мое, речь не о разнице между классами и интерфейсами, а о том, что идентификатор интерфейса не изменяется.Ты действительно не понимаешь разницы между классами и интерфейсами?
Ладно, если ты такой любитель придираться к словам, перефразирую.А с чего ты, вообще говоря, взял, что они там появляются?
Antonariy писал(а):Как же в таком случае объект, объявленный как IHTMLDocument, IHTMLElement и т.п., от версии к версии получает в свое распоряжение новые свойства и методы?
[
odl,
uuid(626FC520-A41E-11CF-A731-00A0C9082637),
dual,
oleautomation
]
interface IHTMLDocument : IDispatch {
[id(0x000003e9), propget, hidden]
HRESULT Script([out, retval] IDispatch** p);
};
[
odl,
uuid(626FC520-A41E-11CF-A731-00A0C9082637),
dual,
oleautomation
]
interface IHTMLDocument : IDispatch {
[id(0x000003e9), propget, hidden]
HRESULT Script([out, retval] IDispatch** p);
};
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 54