C++, CppWebBrowser, проблема поймать завершение загрузки страницы
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
C++, CppWebBrowser, проблема поймать завершение загрузки страницы - 2009-08-22 00:00:46.583333
|
|
|
Time
Сообщений: 96
Оценки: 0
Присоединился: 2007-01-29 12:36:37.266666
|
С компонентой CppWebBrowser работаю недавно. В CppWebBrowser поочерёдно загружаю несколько страниц (в цикле). Проблема поймать окончание загрузки каждой, с целью её обработки в момент завершения (к примеру сохранить её текст и т.п.). Т.е. перед тем как CppWebBrowser приступит к загрузке следущей страницы цикла он должен завершить отображение предыдущий. У меня же получается, что из всех страниц цикла, в процессе отображается только последняя, а остальные как бы не успевают загружатся до конца. Каким образом программно можно приостановить загрузку следущей страницы, пока не закончила загрузку предыдущая или как определить что страница полностью загружена, подскажите пожалуйста? p.s. через NavigateComplete2, DownloadComplete и т.п.события завершение загрузки страниц отследить не получилось…
|
|
|
RE: C++, CppWebBrowser, проблема поймать завершение загрузки страницы - 2009-08-22 09:51:32.676666
|
|
|
AnT1b1oT1k
Сообщений: 50
Оценки: 0
Присоединился: 2009-03-17 01:02:53.560000
|
на С++ Builder в компонентах есть таймер м.б он поможет?
|
|
|
RE: C++, CppWebBrowser, проблема поймать завершение загрузки страницы - 2009-08-22 10:41:07.610000
|
|
|
Time
Сообщений: 96
Оценки: 0
Присоединился: 2007-01-29 12:36:37.266666
|
Да, Timer тоже пробывал. Таким образом.. Запускаем его при начале загрузке страницы по событию BeforeNavigate2 на несколько секунд.. К сожалению за этот период в окне наблюдается просто белый экран а загрузка завершается только после остановки таймера( Как ещё его можно попробывать использовать?
|
|
|
RE: C++, CppWebBrowser, проблема поймать завершение загрузки страницы - 2009-08-23 11:00:07.263333
|
|
|
IceLifer
Сообщений: 15
Оценки: 0
Присоединился: 2009-08-06 17:40:45.046666
|
Примерно так:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SHDocVw_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
bool download;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CppWebBrowser1DocumentComplete(TObject *Sender,
LPDISPATCH pDisp, Variant *URL)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
CppWebBrowser1->Navigate(WideString("www.yandex.ru"));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CppWebBrowser1DownloadBegin(TObject *Sender)
{
download=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CppWebBrowser1ProgressChange(TObject *Sender,
long Progress, long ProgressMax)
{
ProgressBar1->Max=ProgressMax;
ProgressBar1->Position=Progress;
if (CppWebBrowser1->ReadyState==4&&download==true)
{
download=false;
ShowMessage("Finish");
}
}
//---------------------------------------------------------------------------
|
|
|
RE: C++, CppWebBrowser, проблема поймать завершение загрузки страницы - 2009-08-23 12:26:06.543333
|
|
|
IceLifer
Сообщений: 15
Оценки: 0
Присоединился: 2009-08-06 17:40:45.046666
|
Странно,но код рабочий.
|
|
|
RE: C++, CppWebBrowser, проблема поймать завершение загрузки страницы - 2009-08-23 12:50:17.863333
|
|
|
IceLifer
Сообщений: 15
Оценки: 0
Присоединился: 2009-08-06 17:40:45.046666
|
Он рабочий и рабочий для каждой страницы,просто загрузка считаеться для каждого фрейма.
|
|
|
RE: C++, CppWebBrowser, проблема поймать завершение загрузки страницы - 2009-08-23 13:21:25.080000
|
|
|
Time
Сообщений: 96
Оценки: 0
Присоединился: 2007-01-29 12:36:37.266666
|
Как тогда объяснить что браузер не отображает на экран содержимое страниц при зацикленной загрузке в него? p.s. пусть код рабочий, но проблема то не решилась..( есть ещё какие-нибудь мысли?
|
|
|
RE: C++, CppWebBrowser, проблема поймать завершение загрузки страницы - 2009-08-23 13:46:15.103333
|
|
|
IceLifer
Сообщений: 15
Оценки: 0
Присоединился: 2009-08-06 17:40:45.046666
|
Увеличивать шаг цикла ориентируюсь только на св-во busy у браузера я бы так попробывал.
|
|
|
RE: C++, CppWebBrowser, проблема поймать завершение загрузки страницы - 2009-08-23 21:06:10.376666
|
|
|
Time
Сообщений: 96
Оценки: 0
Присоединился: 2007-01-29 12:36:37.266666
|
Через Busy попробывал… Когда зацикливаю.. while (CppWebBrowser->Busy) окно зависает.. Получается, то что браузер всегда Busy.. почему так? Пробывал это зацикливание сразу после Navigate и в событии ProgressChange. эффект одинаковый..
|
|
|
RE: C++, CppWebBrowser, проблема поймать завершение загрузки страницы - 2009-08-24 02:35:22.946666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Зависает потому что перестаёт нормально работать цикл обработки сообщений.
|
|
|
RE: C++, CppWebBrowser, проблема поймать завершение загрузки страницы - 2009-08-24 18:55:30.813333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Разбираться с асинхронностью. Прочитать про то, что такое очередь сообщений и т.д.
|
|
|
|
|