Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как кликнуть по ссылке в CppWebBrowser? 
:(
    Опции темы
ksili
Дата 26.11.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Разобрался немного с CppWebBrowser, но не могу понять как программно кликнуть по ссылке в открытой странице... В HTML-коде сама ссылка выглядит так:
Код

<tr>
    <td class="icon_cell">
        <a onmousemove="ts(event,'tooltip_6',0);" onmouseout="tc('tooltip_6');" title="" href="/cabinet/do_calls"><img width="80" height="70" src="/cabinet/files/ico_stat_b.gif" alt="" border="0"></a><br>
    </td>
    <td class="icon_text"> &nbsp; &nbsp; &nbsp;                            
        <a title="" onmousemove="ts(event,'tooltip_6',0);" onmouseout="tc('tooltip_6');" class="no_decoration" href="/cabinet/do_calls">

            Статистика звонков
        </a>
    </td>
</tr>    


У меня ещё много всяких глупых вопросов по этому компоненту. Это из-за того, что нет нормального хелпа. Может кто-нибудь кинет ссылку на справку по CppWebBrowser? или просто вышлет на почту соответствующий .hlp файл? Я работаю в BCB6

Это сообщение отредактировал(а) ksili - 26.11.2007, 10:25


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
ksili
Дата 26.11.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Допустим я смогу выбрать все линки на странице при помощи метода get_links. Но как потом выбрать нужную сцылку? Опять же нужно указать её имя... а имени нету ((
Код

     cpwbrwsr1->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDocument);

     if( pDocument )
        {
         //pDocument->get_all(&pCollection);
         pDocument->get_links(&pCollection);

         if( pCollection )
            {
             pCollection->item(... имя ..., Variant(0), &pDisp);
            }
        }



--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Vasay
Дата 26.11.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 1
Всего: 73



Я думаю, тут нужны регулярные выражения.

Обрабатываешь принятый html, с помощью  регулярки находишь нужную ссылку, и переходишь по ней, единственное, если там необходима обработка js, то здесь уже надо думать.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
ksili
Дата 26.11.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



То есть просто подставить в Navigate нужную ссылку?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Vasay
Дата 26.11.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 1
Всего: 73



Цитата(ksili @ 26.11.2007,  10:37)
То есть просто подставить в Navigate нужную ссылку?

Как вариант (других пока не вижу)

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


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
ksili
Дата 26.11.2007, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Не получается. Дело в том, что в ссылках указаны относительные ссылки. Если я находясь на странице https:/customer.sipnet.ru/cabinet/ передаю в Navigate, то что указано в самой ссылке (/cabinet/do_calls):
Код

cpwbrwsr1->Navigate(L"//cabinet//do_calls");

То мне браузер пишет, что не найден адрес http://cabinet//do_calls. Если же передавать ему адрес целиком: 
Код

cpwbrwsr1->Navigate(L"https://customer.sipnet.ru//cabinet//do_calls");

то он перекидывает на начало - на авторизацию, т.к. соединение https!
Замкнутый круг получается


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Vasay
Дата 26.11.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 1
Всего: 73



Цитата

то он перекидывает на начало - на авторизацию, т.к. соединение https!
Замкнутый круг получается 


к HTTPS это врядли имеет отношение, скорей всего требуется отправить куки или реферер.. бери плагин к браузеру, позволяющий отлавливать заголовки и смотри, что передается...

Это сообщение отредактировал(а) Vasay - 26.11.2007, 11:27


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
ksili
Дата 26.11.2007, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Утилитой Mini-Browser снял лог нажатия этой ссылки. Там есть и куки и реферер (Referer: https://customer.sipnet.ru/cabinet/) и много ещё чего. Но как их передавать? Куки так вообще, насколько я понимаю, каждый раз разные будут...

Там вообще у метода Navigate есть несклько других параметров помимо пути. Мож там и надо указывать реферер?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Vasay
Дата 26.11.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 1
Всего: 73



Я не помню как указать куки и реферер у CppWebBrowser-а... Помню, что можно smile 

Скорей всего при логини высылается, какая-то кука, которая отвечает за сесию, и если ее передовать, то все будет ок.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.