Как перехватывать события, запускаемые из нового окна Popup IE

Привет!

Ситуация:

Моя ActiveX DLL содержит настроенный веб-браузер. Веб-браузер отображает веб-страницу. Когда пользователь щелкает ссылку на отображаемой странице, всплывает новое окно IE и осуществляется переход к URL-адресу ссылки, на который нажали.

Вопрос:

Как перехватить события DocumenComplete и NavigateComplete, запускаемые из всплывающего окна NEW IE?

Что я уже пробовал:

Я попытался перехватить событие *NewWindow2(IDispatch **ppDisp, VARIANT_BOOL Cancel), запущенное из настроенного веб-браузера (не нового окна IE), и получил указатель ppDisp, который указывает на новое окно IE. Я попытался использовать этот указатель в качестве источника событий, чтобы сообщить или подключиться к обработчику событий (IDispatch::Invoke) для захвата событий. Однако это не работает. Возможно, ошибка связана с тем, что документ в новом окне IE еще не загружен. Я не уверена.

Не могли бы вы дать мне предложение, что мне делать?

Спасибо!


person bionicoder    schedule 18.05.2009    source источник


Ответы (1)


Вы не получаете новый веб-браузер в ppDisp. Вы создаете его, принимаете события и возвращаете его свойство приложения в ppDisp событию.

person Sheng Jiang 蒋晟    schedule 20.05.2009
comment
Не могли бы вы уточнить разницу между получением нового указателя WebBrowser из ppDisp и созданием нового? Согласно MSDN, ppDisp — это указатель, который получает указатель интерфейса IDispatch нового объекта WebBrowser. - person bionicoder; 21.05.2009
comment
Как я уже сказал, вы не получите новый веб-браузер от ppDisp. Вы создаете новый элемент управления веб-браузера, принимаете его события и получаете его свойство приложения. Поместите возвращаемое значение свойства приложения в ppDisp. - person Sheng Jiang 蒋晟; 23.10.2009