17.02.2010, 11:17 | #1 |
Участник
|
WebBrowser
Есть форма на которой размещен ActiveX WEBBrowser.
Если на Web-странице встречается ссылка открывающая новое окно, то запускается Internet Explorer. Я хочу чтобы новые окна открывались в таком же ActiveX WEBBrowser. Перекрываю метод ONnewWindow2 (http://support.microsoft.com/kb/184876) X++: // A new, hidden, non-navigated WebBrowser window is needed. void onEvent_NewWindow2(COM _ppDisp, COMVariant /* boolean */ _Cancel) { WebBrowser2.RegisterAsBrowser(true); _ppDisp = WebBrowser2.Application(); } Но никакого результата не получаю. Все равно при открытии ссылки в новом окне, запускается Internet Explorer. Создаю аналогичный пример в Delphi. Перекрываю метод Onnewwindow X++: procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
WebBrowser2.RegisterAsBrowser := true;
ppDisp := WebBrowser2.Application;
end; Что нужно сделать чтобы пример заработал на X++ ? Может проблема скрыта в IDispatch? Последний раз редактировалось John_11; 17.02.2010 в 11:31. |
|
17.02.2010, 12:43 | #2 |
Участник
|
Можно перекрыть событие OnNewWindow3 и в нем обрабатывать ссылку так
X++: void onEvent_NewWindow3(COM _ppDisp, COMVariant /* boolean */ _Cancel, int _dwFlags, str _bstrUrlContext, str _bstrUrl) { ; _Cancel.boolean( true ); WebBrowser2.Navigate( _bstrUrl ); } Да и есть сомнения,что, в конечно итоге, происходит возврат нового интерфейса в самом первом вызове NewWindow из браузера, даже если его подменить внутри ppDisp
__________________
Axapta v.3.0 sp5 kr2 |
|
18.02.2010, 13:58 | #3 |
Участник
|
AndyD, предложенный Вами вариант работает, но
на некоторых страницах возникает ошибка (см. вложение) Хотя пример с NewWindow2 на Delphi отрабатывает без ошибок. Последний раз редактировалось John_11; 18.02.2010 в 14:02. |
|
24.09.2012, 16:26 | #4 |
Moderator
|
Тоже пришлось с этим бороться. Нашёл здесь http://www.sql.ru/forum/actualthread.aspx?tid=527453, что надо сделать так:
X++: WebBrowser2.Silent( true ); |
|