Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Вопрос по WB:IWebBrowser2 помогите как-нибудь решить проблему   Найти похожие ветки 

 
Wadimka   (2012-06-28 08:35) [0]

Вопрос по WB:IWebBrowser2 помогите как-нибудь решить проблему, собственно создаю объект
                         WB:=CoInternetExplorer.Create;
                         WB.Visible:=True;
                         WB.Navigate("http://google.com", ""),
                               EmptyParam, EmptyParam, EmptyParam, EmptyParam);
Ну вообщем работает нормально, НО этот IE открывается в Visible mode
Я там ищу нужные мне сайты ну и моя программа потом выполняет нужные мне действия.
Но столкнулся с такой проблемой, часто натыкаешься на сайты, где нажав на ссылку открывается новое окно (вкладка), соответственно доступ уже к нему теряется.
Какие есть варианты, чтобы все равно открывалось по нажатию на ссылку в текущем окне, чтобы моя программа могла дальше работать?
В настроках в IE такого нет, есть только наоборот.
Пока придумал так:
1. Или в открытом сайте программно менять все ссылки удаляя у них команду tagret="blank"
2. предлагать мне самому выбрать нужный хендл и дальше работать уже с этим нендлом (менее этот вариант мне нравиться)

Кто, что подскажет?


 
Den   (2012-06-28 09:44) [1]

Создаешь еще один веббровзер, в первом в событии onnewwindow пишешь ppDisp := newbowser.DefaultDispatch; (это откроет новый юрл в твоем новом браузере)

а в newbowser в onbeforenavigate wb.navigate(url); cancel:=true;  ну как-то так поробуй, счас еще подойдут люди подскажут.


 
sniknik ©   (2012-06-28 10:28) [2]

> в onbeforenavigate wb.navigate(url); cancel:=true;
что то мне подсказывает, что "новое" окно это не начало навигации в "старом".

> 1. Или в открытом сайте программно менять все ссылки удаляя у них команду tagret="blank"
имхо, проще всего. хотя можно еще наследника написать/"интерфейсы перекрыть", и в них блокировать старт окна.
или переопределить - SetUIHandler, хотя... вот что нашел в своем старом проекте, т.что думай сам  
//var
// DocHostUIHandler: TDocHostUIHandler; //из-за этого не работает (криво, давая ошибки) сохранение страницы... а функция полезная. придестя извращаться
                                        //ошибка "Попытка отменить конечное место переноса, которое не было зарегистрировано"
                                        //описана проблема тут http://support.microsoft.com/kb/330441/ru ... "это ограничение конструктора в Internet Explorer".
                                        //предлагаемое решение "Не вызывайте метод SetUIHandler Если важно полное сохранение диалогового окна."


 
sniknik ©   (2012-06-28 10:35) [3]

во тут еще даже тема не "ушла" когда и зачем этим занимался - http://delphimaster.net/view/6-1323156396/


 
Den   (2012-06-28 10:40) [4]

что то мне подсказывает, что "новое" окно это не начало навигации в "старом".

не недо в старом, в новом надо, в старом только заставить открываться новый линк в новом:)


 
sniknik ©   (2012-06-28 11:24) [5]

> в старом только заставить открываться новый линк в новом:)
заставлять не надо... в том то и дело (проблема, насколько понял), оно откроется независимо и не предупреждая тебя.

т.е. событий позволяющих что то изменить нет. с другой стороны если нажатие "программное" то его можно сделать, тогда непонятно в чем проблема (как всегда с мутными "описательными" вопросами с куском вообще не связанного с вопросом "кода"). т.к. логика действия в котором проблема не описана, кода действия не приведено.


 
Den   (2012-06-28 12:16) [6]

часто натыкаешься на сайты, где нажав на ссылку открывается новое окно (вкладка), соответственно доступ уже к нему теряется

если нажал на ссылку и возникает  onnewwindow в него вписывается ppDisp := newbowser.DefaultDispatch; редирект на открытие в новом браузере, который нужно предварительно создать. в нем же (в новом браузере) по событию onbeforenavigate пытающийся загрузиться в него сайт (в новый браузер) перенаправляется на старый браузер, а навигация отменяется. короче не знаю как еще обьяснить но оно работает.


 
Wadimka   (2012-06-28 17:10) [7]

Спасибо ребят, потом попробую, пока еще как написал пост сделал чисто на скорую руку.

link.item(i).outerHtml:=StringReplace(link.item(i).outerHtml, "target="_blank"", "", [rfReplaceAll, rfIgnoreCase]);
Соответственно по всем найденным ссылкам, все пашет, хотя нужно будет сделать как Вы мне подсказали, моя фишка не сработает если ссылка будет из javascipt открывацо.

Просто срочно нужно было работать и на скорую руку варганил.
всех благодарю за помощь


 
sniknik ©   (2012-06-28 19:44) [8]

> и возникает  onnewwindow
не возникает, в том то и дело...  просто браузер "раздупливается" да и все.

> моя фишка не сработает если ссылка будет из javascipt открывацо.
вот вот, как раз тот вариант. никаких событий. (еще раз, если не перекрыть UI) было тоже самое.


 
Den   (2012-06-28 20:30) [9]

А ну тода сори:(


 
Wadimka   (2012-06-28 22:53) [10]

>Den
Ну вообще я за твое решение вопроса


 
Den   (2012-06-28 23:11) [11]

Ну ты отпишись че там с скриптами этими если че. Ну работает, не.


 
Wadimka   (2012-06-28 23:13) [12]

ок, не раньше, чем дня через 3-4


 
Wadimka   (2012-06-28 23:20) [13]

Den а лучше на мыло аську пришли, бо могу забыть тему отписаться


 
Den   (2012-06-29 18:34) [14]

Ну забудешь и ладно яж так ради интереса мне не горит.



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.055 c
6-1257071180
__Алексей__
2009-11-01 13:26
2013.03.22
Сбор статистики трафика через Netflow


15-1337538834
64355443444-й
2012-05-20 22:33
2013.03.22
Не могу загрузить файл


2-1340780940
aka
2012-06-27 11:09
2013.03.22
Удаления пробелов в строке.


1-1300272526
Unknown_user
2011-03-16 13:48
2013.03.22
Ограничение скроллинга в 32767


15-1338467677
Андреевич
2012-05-31 16:34
2013.03.22
исходник "юнита" в шарпе