Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.069 c
15-1338377064
Handle
2012-05-30 15:24
2013.03.22
проектирование БД интернет-магазина


2-1346498845
FIL-23
2012-09-01 15:27
2013.03.22
Открытие формы из другой


2-1345735828
Dennis I. Komarov
2012-08-23 19:30
2013.03.22
TService + User SYSTEM + поток + ODBC = Источник данных не на...


6-1247157100
axis_of_evil
2009-07-09 20:31
2013.03.22
TidSMTP


2-1328712585
upc
2012-02-08 18:49
2013.03.22
Запретить изменять Position с помощью колесика у TrackBar





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский