Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

.NET WebBrowser узнать загрузилась ли страничка

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> .NET WebBrowser узнать загрузилась ли страничка
Имя
Сообщение << Старые топики   Новые топики >>
.NET WebBrowser узнать загрузилась ли страничка - 2011-08-25 19:25:49.723333   
ololo__schoolboy

Сообщений: 118
Оценки: 0
Присоединился: 2011-06-14 12:42:52.573333
Есть примерно такой:
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(int i=0;i&lt;size;++i) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this-&gt;webBrowser1-&gt;Navigate("http://site.ru/param=" + Convert::ToString(Array[0])); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /* &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; do{ &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Sleep(1000); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }while(незагружено); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; тут надо парсить &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; */ &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
как мне определить, что страничка уже загрузилась ?

ps DocumentCompleted не катит
Post #: 1
RE: .NET WebBrowser узнать загрузилась ли страничка - 2011-08-26 12:27:53.750000   
ALE}{_Y

Сообщений: 35
Оценки: 0
Присоединился: 2010-02-14 03:23:27.436666
quote:

как мне определить, что страничка уже загрузилась ?


Для этого необходимо использовать событие WebBrowser - Navigated следующим образом:

void YourOwnFunc() { //допустим тут Вы создаете свой браузер WebBrowser webBrowser1 = new WebBrowser(); //добавляете обработчик события Navigated //обратите внимание, необходимо самому создать функцию которая будет выполняться //при наступлении данного события (в данном случае функция wb_Navigated) webBrowser1.Navigated += new WebBrowserNavigatedEventHandler(wb_Navigated); //тут осуществляете переход на нужную страницу webBrowser1.Navigate("http://site.ru/param=" + Convert.ToString(Array[0])); } //функция wb_Navigated, о которой упоминалось ранее static void wb_Navigated(object sender, WebBrowserNavigatedEventArgs e) { //тут производите необходимые Вам действия throw new NotImplementedException(); }
P.S. Код пишу на C#. Переделать на С++ труда не составит, так как главное, чтобы Вы уловили суть.
Post #: 2
RE: .NET WebBrowser узнать загрузилась ли страничка - 2011-08-26 17:47:40.050000   
ololo__schoolboy

Сообщений: 118
Оценки: 0
Присоединился: 2011-06-14 12:42:52.573333
возникла еще проблема, как синхронизировать обработчик события с циклом который переключает странички. Пробовал так:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;size;++i) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this-&gt;webBrowser1-&gt;Navigate("http://site.ru/param=" + Convert::ToString(Array[0])); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //жду пока произойдет событие&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do{ &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Sleep(5000); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; }while(!IsLoaded); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; //что-то делаю &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; IsLoaded = false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } соответственно при загрузке IsLoaded = true. Но проблема в том, что при вызове Sleep загрузка останавливается
Post #: 3
RE: .NET WebBrowser узнать загрузилась ли страничка - 2011-08-26 20:44:49.583333   
ALE}{_Y

Сообщений: 35
Оценки: 0
Присоединился: 2010-02-14 03:23:27.436666
Функция Sleep() блокирует выполнение потока, так что по сути Вы получаете бесконечный цикл.
Мне кажеться, Вам нужно перенести часть кода программы в функцию обработки события Navigated.

Что-то типа такого:
void YourOwnFunc() { //........................... //предыдущий код работы програмы //добавление все того же обработчика события Navigated webBrowser1.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_Navigated); //тут осуществляете переход на первую страницу webBrowser1.Navigate("http://site.ru/param=" + Convert.ToString(Array[0])); } //функция webBrowser1_Navigated static void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { //последующие итерации цикла //обратите внимание, начало цикла уже с 1, а не с 0 int i; for(i=1;i&lt;size;++i) { //тут производите переход на остальные страницы this.webBrowser1.Navigate("http://site.ru/param=" + Convert.ToString(Array[0])); } if(i == size-1) { //.......................... //код из предыдущего метода //или вызов другого } }
В результате получаем прохождение всех итераций цикла (в зависимости от переменной size), выполнение
последующего кода программы или вызов соответствующего метода.
Данное решение задачи не являеться единственно праильным, но для решения "на скорую руку" думаю покатит.

P.S. ololo__schoolboy, напишите пожалуйста, какое решение в результате примете. Чисто в целях научного интереса)))
Post #: 4
RE: .NET WebBrowser узнать загрузилась ли страничка - 2011-08-27 18:20:38.626666   
ololo__schoolboy

Сообщений: 118
Оценки: 0
Присоединился: 2011-06-14 12:42:52.573333
&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System::Void button1_Click(System::Object^&nbsp; sender, System::EventArgs^&nbsp; e) { &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; i = 0; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this-&gt;webBrowser1-&gt;Navigate("..."); &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System::Void webBrowser1_DocumentCompleted_1(System::Object^&nbsp; sender, System::Windows::Forms::WebBrowserDocumentCompletedEventArgs^&nbsp; e) { &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(i) &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(!(this-&gt;webBrowser1-&gt;Document-&gt;GetElementById(gcnew String("no_results")))) &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; HtmlElementCollection^ Results = this-&gt;webBrowser1-&gt;Document-&gt;GetElementById(gcnew String("results"))-&gt;Children; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(int i=0;i&lt;Results-&gt;Count;++i) &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this-&gt;textBox1-&gt;Text += "\r\n" + Results[i]-&gt;Children[1]-&gt;Children[1]-&gt;Children[0]-&gt;InnerHtml; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(i&lt;size) &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this-&gt;webBrowser1-&gt;Navigate &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ( &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "..." &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; +Convert::ToString(Schools[i++])+ &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "..." &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ); &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
ps если, что ты сам попросил =)
Post #: 5
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> .NET WebBrowser узнать загрузилась ли страничка







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.