Имеем:
1. Внепроцессный сервер. Некоторые методы принимают в качестве параметра IHTMLDocument2.
2. Удаленного клиента на Win2000 и Win98.
3. Проблемы с клиентом на Win98. Только при вызове методов, принимающих в качестве параметра IHTMLDocument2.
4. Метод сервера, который принимает парметром IHTMLDocument2, запускает нитку и передает в нее полученный IHTMLDocument2, а нитка вызывает другой метод (***) этого же интерфейса и отправлят туда IHTMLDocument2, в который пишется текст.
Проблема:
Если клиент на Win2000, то проблем нет. На Win98 не происходит вызов метода (***), т.е. подготовка параметров проходит а самого вызова нет, как будто его нет в тексте. В чем проблема и как ее исправить?
Здравствуйте, BoikoRoman, Вы писали:
BR>Имеем: BR>1. Внепроцессный сервер. Некоторые методы принимают в качестве параметра IHTMLDocument2. BR>2. Удаленного клиента на Win2000 и Win98. BR>3. Проблемы с клиентом на Win98. Только при вызове методов, принимающих в качестве параметра IHTMLDocument2. BR>4. Метод сервера, который принимает парметром IHTMLDocument2, запускает нитку и передает в нее полученный IHTMLDocument2, а нитка вызывает другой метод (***) этого же интерфейса и отправлят туда IHTMLDocument2, в который пишется текст.
BR>Проблема: BR>Если клиент на Win2000, то проблем нет. На Win98 не происходит вызов метода (***), т.е. подготовка параметров проходит а самого вызова нет, как будто его нет в тексте. В чем проблема и как ее исправить?
1. как интерфейс передаётся? маршалится?
2. MSHTML вообще криво сделан. Если запускать его не в STA или пытаться использовать из разных апартментов, то некоторые интерфейсы не возвращаются. Там внутри стоит проверка на соответствие апартмента тому где MSHTML создавался. В частности вроде IMarkupServices не доступны. Так что лучше сразу играть по их правилам — создать обёртку над IHTML* и уже с ней работать.
Здравствуйте, romulus, Вы писали:
R>1. как интерфейс передаётся? маршалится?
Как обычный параметр метода. Маршалится без моей помощи. R>2. MSHTML вообще криво сделан. Если запускать его не в STA или пытаться использовать из разных апартментов, то некоторые интерфейсы не возвращаются. Там внутри стоит проверка на соответствие апартмента тому где MSHTML создавался. В частности вроде IMarkupServices не доступны. Так что лучше сразу играть по их правилам — создать обёртку над IHTML* и уже с ней работать.
Если проблема с MSHTML, тогда почему это все работает на Win2000?