Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как можно "разобрать" браузер?


Автор: yuraefimov 1.7.2014, 14:19
Добрый день! Очень нужна ваша помощь. Есть вот какая задачка - нужно понять какой адрес сайта у меня открыт сейчас во вкладке браузера (именно в активном рабочем окне - не все открытые вкладки нужны, а сайты на которых я физически провел какое-то время) и потом нужно будет сохранять эти данные, то есть проверка должна делаться периодически. Один знакомый сказал что нужно "разбирать" браузер и оттуда можно вытащить значение url сайта. Он пробовал это сделать через win api, но не получилось. Говорит что можно попробовать еще IHTMLDocument2. Может кто-то сталкивался и сможет подсказать как можно решить эту задачу?

Автор: Poseidon 1.7.2014, 16:05
Цитата(yuraefimov @  1.7.2014,  14:19 Найти цитируемый пост)
Он пробовал это сделать через win api, но не получилось. Говорит что можно попробовать еще IHTMLDocument2.
Все это если и прокатит, то только с IE. Другие браузеры так не "зразберешь". Может проще делать скриншот экрана и там уже "выискивать" адресную строку и распознавать текст?

Автор: DenNik 2.7.2014, 14:54
у компонента WebBrowser есть куча событий, в обработчики которых передается URL загруженной/загружаемой/до начала загрузки страницы. неужели тяжело где-нибудь сохранить его с тем, чтобы в последствии использовать?

аналогично у компонентом TChromium также куча событий с передачей URL. также можно выцепить таким кодом

Код

Chromium1.Browser.MainFrame.Url;


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Kak-mozhno-razobrat-brauzer-id53b2999eae20158f4b8b4567#findElement_E7045_53b3f30aae20157c4bcb066a_0

Автор: Poseidon 2.7.2014, 23:06
DenNik, все это хорошо, только автору надо не в своей программе получить URL, а из самого браузера (сторонней программы).

Автор: Keeper89 3.7.2014, 01:29
Цитата(Poseidon @  1.7.2014,  16:05 Найти цитируемый пост)
Все это если и прокатит, то только с IE. Другие браузеры так не "зразберешь". Может проще делать скриншот экрана и там уже "выискивать" адресную строку и распознавать текст? 

Я бы не был столь категоричен:
  • Internet Explorer - You can use SHDocVw
  • Firefox - You can get the URL using DDE
  • Chrome - You can get the URL while enumerating all the child windows untill you get to the control with class "Chrome_OmniboxView" and then get the text using GetWindowText
  • Opera - You can use the same thing as Firefox, but with "opera"
  • Safari - There is no known method since it uses custom drawn controls
и пример по ссылке: http://stackoverflow.com/questions/7814027/how-can-i-get-urls-of-open-pages-from-chrome-and-firefox

Автор: yuraefimov 3.7.2014, 09:21
Да, нужно именно не в своей программе получить URL, а из самого браузера..
Спасибо большое, попробуем тогда как здесь - http://stackoverflow.com/questions/7814027/how-can-i-get-urls-of-open-pages-from-chrome-and-firefox
скриншот экрана сказали что не подойдет smile

Автор: Poseidon 3.7.2014, 21:11
Цитата(Keeper89 @  3.7.2014,  01:29 Найти цитируемый пост)
Я бы не был столь категоричен:
Я процитировал конкретную фразу. В частности говорилось о вытягивании URL через WinAPI или IHTMLDocument2. Есть примеры как возможно вытянуть URL из Оперы через IHTMLDocument2?

Автор: CynicRus 3.7.2014, 22:50
А я бы при решении такой задачи - хукнул бы WSASend и Send, и оттуда бы брал URL на которые обращается сокет. Может быть получил бы много лишнего, но зато было бы эффективно практически для любого браузера, что под Win работает.

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