Integration of VB Client with web app - best way?

User avatar
Komissar
Уже с Приветом
Posts: 64875
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Integration of VB Client with web app - best way?

Post by Komissar »

Есть ВБ-клиент (чужая). Есть веб-апп (моя). Надо, чтобы при нажатии на линк внутри веб-апп, небольшой кусок инфы (скажем, Item_ID) передавался в ВБ-клиент, чтобы там на основной форме кое-какая фигня перерисовалась.

Пока план такой (не мой :mrgreen: ): моя страница хостится ActiveX внутри ВБ-формы . Когда юзер нажимает на линк Pick Me! в странице, страница перерисовывается, при этом линк Pick Me! заменен на симпатичную ненажимаемую иконку (шоб юзер одно и то же не мог дважды выбрать). Item_id выбранного предмета записывается как hidden element в HTML форму внутри страницы.

АктивХ, со своей стороны, реагирует на перерисовывание страницы. Получив эвент NavigationComplete (или как его там), АктивХ лезет внутрь страницы, извлекает Item_ID из формы и передает это значение в главную ВБ-форму, к-рая при этом должным образом перерисовывается.

Это как - очень гиморный способ или ОК? Какие есть лучшие предложения?
User avatar
IA72
Уже с Приветом
Posts: 956
Joined: 04 Mar 2002 10:01

Re: Integration of VB Client with web app - best way?

Post by IA72 »

Komissar wrote:Есть ВБ-клиент (чужая). Есть веб-апп (моя). Надо, чтобы при нажатии на линк внутри веб-апп, небольшой кусок инфы (скажем, Item_ID) передавался в ВБ-клиент, чтобы там на основной форме кое-какая фигня перерисовалась.

Пока план такой (не мой :mrgreen: ): моя страница хостится ActiveX внутри ВБ-формы . Когда юзер нажимает на линк Pick Me! в странице, страница перерисовывается, при этом линк Pick Me! заменен на симпатичную ненажимаемую иконку (шоб юзер одно и то же не мог дважды выбрать). Item_id выбранного предмета записывается как hidden element в HTML форму внутри страницы.

АктивХ, со своей стороны, реагирует на перерисовывание страницы. Получив эвент NavigationComplete (или как его там), АктивХ лезет внутрь страницы, извлекает Item_ID из формы и передает это значение в главную ВБ-форму, к-рая при этом должным образом перерисовывается.

Это как - очень гиморный способ или ОК? Какие есть лучшие предложения?


Я, в общем, собаку съел на различной интеграции IE, как внутри, так и снаружи :) Если есть возможность поменять твое приложение (ну или даже если нет, динамически можно страничку модифицировать), то вместо ловли OnNavigationComplete или OnDocumentComplete и прочее я бы имплементировал IDocHostUIHandler (GetExternal, Invoke, GetIDsOfNames).
Тогда в твоей хтмэлине можно писать
<a onClick="window.external.pickme('Foo', 'Bar')">
User avatar
Komissar
Уже с Приветом
Posts: 64875
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Post by Komissar »

АААА! Вот мы в другом топике спорим о пользе тестов при приеме на работу... вот один из наших ВБ-кадров (принятый без тестов :mrgreen: ) пишет мне, после того как я передал ему Ваш совет по интеграции:

"this interface is pretty big and there is no stock implementation I can use -> lot of work..."

я-то как раз не против изменить страницу и добавить <a onClick="window.external.pickme('Foo', 'Bar')">, а вот у чувака проблемы...

не подкинете несколько строчек sample code, чтобы его мордой ткнуть?
User avatar
IA72
Уже с Приветом
Posts: 956
Joined: 04 Mar 2002 10:01

Post by IA72 »

Komissar wrote:АААА! Вот мы в другом топике спорим о пользе тестов при приеме на работу... вот один из наших ВБ-кадров (принятый без тестов :mrgreen: ) пишет мне, после того как я передал ему Ваш совет по интеграции:

"this interface is pretty big and there is no stock implementation I can use -> lot of work..."

я-то как раз не против изменить страницу и добавить <a onClick="window.external.pickme('Foo', 'Bar')">, а вот у чувака проблемы...

не подкинете несколько строчек sample code, чтобы его мордой ткнуть?


Увольнять нах. С треском, ибо либо глуп, либо врет.

1) Ни один из полутора десятков методов в этом интерфейсе не является обязательным для имплементирования.

2) В вашем случае надо только один - GetExternal, который будет состоять из двух строчек
ppDispatch = this; (в случае если IDispatch target это сам хост и есть, у меня так обычно и выходило)
return S_OK;


3) GetIDsOfNames и Invoke это, насколько должно быть известно каждому имеющему COM у себя в резюме методы IDispatch, примеров к которым жопой ешь, извиняюсь за выражение, так ему и передайте :)
User avatar
Komissar
Уже с Приветом
Posts: 64875
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Post by Komissar »

ok, так и запишем:
"... and the examples for those methods are abundant to the point that you dope can eat them with your stupid ass" :mrgreen:
User avatar
IA72
Уже с Приветом
Posts: 956
Joined: 04 Mar 2002 10:01

Post by IA72 »

Komissar wrote:ok, так и запишем:
"... and the examples for those methods are abundant to the point that you dope can eat them with your stupid ass" :mrgreen:


Перевод не совсем точен, но смысл ухвачен абсолютно верно :)
User avatar
Komissar
Уже с Приветом
Posts: 64875
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Post by Komissar »

вот что чувак написал мне сегодня"я:

I still don't think that implementing that interface is the way to go. It is not available in vb (the MSHTML object model is different for the vb side of things) and I since I am hosting the web browser in a dialog I don't have access to the client site initialization.

??? WTF?
User avatar
IA72
Уже с Приветом
Posts: 956
Joined: 04 Mar 2002 10:01

Post by IA72 »

Komissar wrote:вот что чувак написал мне сегодня"я:

I still don't think that implementing that interface is the way to go. It is not available in vb (the MSHTML object model is different for the vb side of things) and I since I am hosting the web browser in a dialog I don't have access to the client site initialization.

??? WTF?


Я же говорю - увольнять. "MSHTML Object model" тут вообще непричем, это раз. Причем тут диалог? Это два. Что, в VB ну никак нельзя сказать ((ICustomDoc)htmlDocument).SetUIHandler()?
Индус? :)
User avatar
Komissar
Уже с Приветом
Posts: 64875
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Post by Komissar »

да нет, итальянец. Он вообще-то ничего чувак, только вот здесь он затормозил.

Return to “Вопросы и новости IT”