Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Взаимодействие программы с браузерами


Автор: BreakPointMAN 9.5.2006, 22:02
Собственно, сабж. Интересует любая информация на темы:
  • написание плагинов для браузеров и надстроек над IE (в частности, для OperaMozillaFireFoxMaxthon и т.д.);
  • перехват ссылок и закачек из IE и других браузеров;
  • получение любой доступной информации от этих браузеров (например, URL текущей открытой страницы и т.д.);
  • формат хранения коллекций ссылок (aka "Избранное" в IE или "Закладки" в Opera) и возможные способы их импорта/экспорта;
  • и т.д.
Чем информации больше - тем лучше. Если у кого-нибудь есть интересные ссылочки по сабжу, прошу поделиться...   smile 

Что касается того, на чем и под чем пишем... 
Среда разработки: Borland C++ Builder 6 
Операционная система: Win9x/MEWin2kWinXP

Нашел кое-что по написанию плагинов для Internet Explorer'а на http://rsdn.ru( http://rsdn.ru/article/inet/ieplug.xml и http://rsdn.ru/article/inet/ieplug2.xml)).

По Mozilla Firefox кое-что есть здесь: http://www.toolbar.net.ru .

Тем не менее, вопрос остается открытым...    

Автор: _hunter 10.5.2006, 19:09
во-первых: IE и Maxthon -- суть одно и то же.
во-вторых: кто сказал что Opera, Mozilla -- надстройки?
ну и в-третьих: все эти браузеры используют разные подходы к перехвату/взаимодействию => спрашивать лучше на форумах разработчиков.

причем пример BHO для IE есть в MSDN' e
для мозил есть FlashGot (его исходники доступны)
 

Автор: BreakPointMAN 10.5.2006, 21:26
Цитата(_hunter @  10.5.2006,  19:09 Найти цитируемый пост)
во-первых: IE и Maxthon -- суть одно и то же.

тем не менее, плагины для них пишутся по-разному...  smile  ибо Maxthon это не браузер в полном смысле этого слова, а оболочка, которая может использовать движки IE или Gecko для отображения веб-страниц.

Цитата(_hunter @  10.5.2006,  19:09 Найти цитируемый пост)
во-вторых: кто сказал что Opera, Mozilla -- надстройки?

поэтому у меня и написано 
Цитата(BreakPointMAN @  9.5.2006,  22:02 Найти цитируемый пост)
для браузеров и надстроек над IE

наверное, фразу нужно было построить немного по-другому... smile 

Цитата(_hunter @  10.5.2006,  19:09 Найти цитируемый пост)
ну и в-третьих: все эти браузеры используют разные подходы к перехвату/взаимодействию

Поэтому я и спрашиваю, быть может, у кого-то есть интересные/полезные ссылке по теме (исходники/статьи/документация и т.п.)

Цитата(_hunter @  10.5.2006,  19:09 Найти цитируемый пост)
=> спрашивать лучше на форумах разработчиков.

гмм... такое простое решение мне как-то не пришло в голову...  smile  smile да, пожалуй, это путь наименьшего сопротивления.


Цитата(_hunter @  10.5.2006,  19:09 Найти цитируемый пост)
причем пример BHO для IE есть в MSDN' e
для мозил есть FlashGot (его исходники доступны)

О'кей, спасибо за инфо, поищем-с...


PS: тем не менее, вопрос продолжает оставаться открытым. Буду признателен за любую стоящую информацию.  smile 
  

Автор: BreakPointMAN 28.5.2006, 10:13
Пффф... итак, возвращаясь к баранам... Получение текущего URL и текущего окна заголовка в браузерах. Насколько я понял, существует три основных способа решения данной задачи:



1) Извращения с окнами
Очень ненадежный метод, с которым даже не хочется связываться. Заключается в том, чтобы находить буквально "вручную" нужные окна с помощью WinAPI-функций FindWindowGetWindow и пр., а затем получать необходимую информацию с помощью функции GetWindowText, посылки сообщения WM_GETTEXT и т.д. Зачастую нужно знать классы окон и их tab-последовательность, причем не факт, что ни то, ни другое не изменится в следующих версиях браузеров, да и что будет, например, если я возьму и сотру адрес из поля ввода?   smile  



2) DDE

Большинство браузеров являются DDE-серверами. Чтобы получить текущий URL, клиент должен установить соединение с сервером на тему (Topic) "WWW_GetWindowInfo" и выполнить запрос элемента данных (Item) "0xFFFFFFFF", результатом такого запроса будет строка c текущими адресом и заголовком окна:
Цитата
"http://www.yandex.ru/","Яндекс",""

Не очень удобно сделано, потому что потом эту строку еще нужно делить на составные части... Хорошо хоть, что они заключены в кавычки и разделены запятыми... но лучше, наверное, было бы, чтобы они передавались по-отдельности, или заключались в такие символы-разделители, которые не могут встретиться ни в адресе, ни в заголовке окна... Не знаю, могут ли встречаться кавычки и запятые в адресе, но в заголовке точно могут. Как отсюда корректно вырезать и то, и другое? Кстати, что за третья пустая строка, быть может, кто-нибудь знает? Она присутствует не всегда и не для всех браузеров...

Ну, а код на C++ Builder'е (в котором я пишу) будет выглядить примерно так:

Код

DdeClientConv1->SetLink("IExplore","WWW_GetWindowInfo");
Edit1->Text = AnsiString(DdeClientConv1->RequestData("0xFFFFFFFF"));
DdeClientConv1->CloseLink();


Вместо "IExplore" может, например, быть "Firefox" или "Mozilla" или "Opera"...
Теперь достаточно кинуть на форму TDdeClientConv и TEdit и прописать где нужно, данный код.

3) COM
А вот здесь, пока, полный мрак... Хотелось бы разобраться с тем, как можно выполнять те же самые задачи с помощью COM-технологии. Какие из браузеров ее поддерживают? Как это можно реализовать на C++ Builder? Приветствуются любые ссылки по теме. 

Автор: VictorGr 23.7.2007, 22:37
BreakPointMAN, пример COM: http://forum.vingrad.ru/forum/topic-164401/anchor-entry1202167/0.html

Получать URL по DDE из IEXPLORER получается, но только самый крайний (последнюю открытую копию). А как можно перебрать все?

Вообще очень интересным было бы установить WWW_RegisterURLEcho, чтобы IE сам сообщал о новых страницах. Знает ли кто-нибудь как такое осуществить?

Автор: Klin 23.7.2007, 23:58
Ребят, вас, что в финннскомм институте биистроого реагииирования учат?

Автор: cerf_machine 10.8.2007, 09:44
Цитата

финннскомм институте биистроого реагииирования учат? 

Не трогаем Финские универы, они Линуса выучилиsmile

По сабжу: а чем не подходит BHO? При использовании ATL разработка плагина упрощается до невозможности.

http://www.microsoft.com/rus/msdn/publish/articles/expie_hello_bho.mspx -- куда проще?

Автор: _hunter 10.8.2007, 11:01
Цитата(cerf_machine @  10.8.2007,  09:44 Найти цитируемый пост)
По сабжу

наверное и ты не заметил, но вопрос задавался больше года назад => сильно сомневаюсь что твои советы актуальны.

Цитата(cerf_machine @  10.8.2007,  09:44 Найти цитируемый пост)
а чем не подходит BHO

а тем, что ни в опере ин в мозиле их нет. а про ие уже все сказали...

Автор: malor 19.8.2009, 20:43
Цитата(BreakPointMAN @ 9.5.2006,  22:02)
[*]перехват ссылок и закачек из IE и других браузеров;

Удалось что-нить накопать по данному вопросу ? 
Интересует осуществление перехвата из FireFox.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)