Valdemar |
Отправлено: 03.03.2006, 17:29 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Содержимое CppWebBrowser формируется программно. Мне нужно отслеживать нажатие пользователем на ссылки, а в ответ очистить CppWebBrowser и вывести новую информацию. Вроде бы для этого нужно обработать событие OnBeforeNavigate2. В справке по этому событию написано, что заменив значение параметра URL, можно перейти к другому адресу. Но у меня переход происходит все равно по старому адресу.
Посоветуйте, как решить эту задачу. |
|
dvv |
Отправлено: 04.03.2006, 10:50 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 43
|
Пользовался этим событием. Но вот что-бы так круто и сразу — изменить URL и ходу на другую страницу — не приходилось.
Прочел URL, остановил выполнение и запустил навый Navigate.
Так у меня отрабатывало нормально.
Отредактировано dvv — 04/03/2006, 10:50 |
|
GIZMO |
Отправлено: 06.03.2006, 12:27 |
|
Машинист паровоза
Группа: Участник
Сообщений: 174
|
QUOTE (Valdemar @ 03/03/2006, 17:29) | Содержимое CppWebBrowser формируется программно. Мне нужно отслеживать нажатие пользователем на ссылки, а в ответ очистить CppWebBrowser и вывести новую информацию. Вроде бы для этого нужно обработать событие OnBeforeNavigate2. В справке по этому событию написано, что заменив значение параметра URL, можно перейти к другому адресу. Но у меня переход происходит все равно по старому адресу.
Посоветуйте, как решить эту задачу. |
В OnBeforeNavigate2:
1. Вызвать CppWebBrowser1->Stop()
2. Перейти по нужной ссылке CppWebBrowser1->Navigate("Lres://webhost.exe/nonavigate.htm", ...)
|
|
Valdemar |
Отправлено: 06.03.2006, 13:34 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
GIZMO, если в обработчике события OnBeforeNavigate2 написать CppWebBrowser1->Navigate, то произойдет зацикливание. |
|
GIZMO |
Отправлено: 07.03.2006, 11:14 |
|
Машинист паровоза
Группа: Участник
Сообщений: 174
|
QUOTE (Valdemar @ 06/03/2006, 13:34) | GIZMO, если в обработчике события OnBeforeNavigate2 написать CppWebBrowser1->Navigate, то произойдет зацикливание. |
А ты пробовал? Вот типа такого прекрасно работает (правда в BHO, но разницы не должно быть):
CODE | ...
case DISPID_BEFORENAVIGATE2:
url = WideString(pDispParams->rgvarg[5].pvarVal->bstrVal);
if (url == WideString("http://www.microsoft.com"))
{
m_pWebBrowser2->Stop();
CComBSTR newURL = "Lres://webhost.exe/nonavigate.htm";
m_pWebBrowser2->Navigate(newURL, NULL, NULL, NULL, NULL);
((*pDispParams).rgvarg)[0].boolVal = TRUE;
}
...
|
приду домой попробуй в CppWebBrowser/
|
|
GIZMO |
Отправлено: 07.03.2006, 11:25 |
|
Машинист паровоза
Группа: Участник
Сообщений: 174
|
QUOTE (Valdemar @ 06/03/2006, 13:34) | GIZMO, если в обработчике события OnBeforeNavigate2 написать CppWebBrowser1->Navigate, то произойдет зацикливание. |
А ты пробовал? Вот типа такого прекрасно работает (правда в BHO, но это теже яйца...):
CODE | ...
case DISPID_BEFORENAVIGATE2:
url = WideString(pDispParams->rgvarg[5].pvarVal->bstrVal);
if (url == WideString("http://www.microsoft.com"))
{
m_pWebBrowser2->Stop();
CComBSTR newURL = "Lres://webhost.exe/nonavigate.htm";
m_pWebBrowser2->Navigate(newURL, NULL, NULL, NULL, NULL);
((*pDispParams).rgvarg)[0].boolVal = TRUE;
}
...
|
приду домой попробуй в CppWebBrowser. Да чуть не забыл — вот это обязательно: ((*pDispParams).rgvarg)[0].boolVal = TRUE; В OnBeforeNavigate2 он выглядит так TOLEBOOL *Cancel, туда надо передать true.
|
|
Valdemar |
Отправлено: 09.03.2006, 15:23 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Конечно пробовал. Просто я не делал проверки на определенный URL, т.к. мне надо перехватывать переходы на любые ссылки. С условием все работает.
И еще вопрос: как очистить содержимое CppWebBrowser, с целью вывода нового текста программно? |
|
GIZMO |
Отправлено: 12.03.2006, 00:47 |
|
Машинист паровоза
Группа: Участник
Сообщений: 174
|
QUOTE (Valdemar @ 09/03/2006, 15:23) |
Конечно пробовал. Просто я не делал проверки на определенный URL, т.к. мне надо перехватывать переходы на любые ссылки. С условием все работает.
И еще вопрос: как очистить содержимое CppWebBrowser, с целью вывода нового текста программно? |
CppWebBrowser->Navigate("about:blank", ...)
|
|
Valdemar |
Отправлено: 13.03.2006, 12:26 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Спасибо. Я прежде чем спросить так и делал, только оказалось, что написал с ошибкой, поэтому оно и не работало. |
|
Max |
Отправлено: 24.08.2006, 19:43 |
|
Не зарегистрирован
|
Содержимое CppWebBrowser формируется программно. Мне нужно отслеживать нажатие пользователем на ссылки, а в ответ очистить CppWebBrowser и вывести новую информацию.
А можно поподробней насчет отслеживания нажатия на ссылки и получения URL этой самой ссылки. Такое возможно? Если можно, приведите кусочек кода.
|
|
Valdemar |
Отправлено: 25.08.2006, 07:49 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
QUOTE | А можно поподробней насчет отслеживания нажатия на ссылки и получения URL этой самой ссылки. |
В CppWebBrowser есть событие OnBeforeNavigate2, один из параметров которого содержит URL. Событие возникает после нажатия на ссылку и до перехода на нее.
Примеры поищите с помощью поиска по слову CppWebBrowser. |
|