HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

нужна помощь delphi webbrowser
  #1  
Старый 29.08.2009, 11:01
woolfon
Новичок
Регистрация: 04.05.2008
Сообщений: 7
С нами: 9484548

Репутация: 0
По умолчанию нужна помощь delphi webbrowser

имеется код:
Код:
begin
 link:=WebBrowser1.OleObject.Document.getelementsbytagname('a');
 for i:=0 to link.length-1 do
 if pos('/addfriend?recall=',link.item(i).href)<>0 then link.item(i).click;
 end;
вообщем находит он 20 ссылок и пытается сразу кликнуть по всем, а мне надо чтобы кликнул по одной, страница обновилась кликнул по другой и т.д. пока не кончатся ссылки. помогите кто чем может) я сам ващпе не кодер!
 
Ответить с цитированием

  #2  
Старый 29.08.2009, 16:23
=Zeus=
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
С нами: 8817310

Репутация: 108
По умолчанию

попробуй использовать sleep(5000) в цикле. Это задержка выполнения следующей команды на 5 секунд.

Последний раз редактировалось =Zeus=; 29.08.2009 в 16:32..
 
Ответить с цитированием

  #3  
Старый 29.08.2009, 16:36
HakaR
Участник форума
Регистрация: 23.07.2009
Сообщений: 261
С нами: 8843557

Репутация: 539
По умолчанию

Цитата:
Сообщение от =Zeus=  
попробуй использовать sleep(5000) в цикле. Это задержка выполнения следующей команды на 5 секунд.
Если ставить sleep, вроде программа подвисать будет...
 
Ответить с цитированием

  #4  
Старый 29.08.2009, 16:39
=Zeus=
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
С нами: 8817310

Репутация: 108
По умолчанию

А Application.ProcessMessages для чего? Хотя наверно sleep() тут не лучщий вариант, пусть ТС попробует, будем знать.
 
Ответить с цитированием

  #5  
Старый 29.08.2009, 16:56
mr. ZetRikS
Познающий
Регистрация: 17.07.2009
Сообщений: 47
С нами: 8852409

Репутация: 4
По умолчанию

Application.ProcessMessages даёт приложению проработаться... то есть скорее всего он кликнет по всем ссылкам и потом даст загрузить последнюю...
нун после последней даст проработаться... так как клик по ссылке он обработает... из предложенного думаю как раз задержка (sleep(5000)) в 5 секунд и подойдёт...
Можно попробовать... блин... пока писал забыл чего хотел предложить...

Вот есть ещё такой вариант, создавать несколько объектов и в них грузить ссылки
 
Ответить с цитированием

  #6  
Старый 29.08.2009, 19:35
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

ппц народ вы гении. жжжоте
после первого же перехода автоматом похерятся остальыне ссылки.
Так что кидай во временный массив все ссылки.
А потом пробегайся по нему и грузи линки в WebBrowser и делай ожидания пока не наступит событие Complite
 
Ответить с цитированием

  #7  
Старый 31.08.2009, 19:25
woolfon
Новичок
Регистрация: 04.05.2008
Сообщений: 7
С нами: 9484548

Репутация: 0
По умолчанию

вообщем я копирую ссылки в listbox

Код:
begin
 link:=WebBrowser1.OleObject.Document.getelementsby tagname('a');
 for i:=0 to link.length-1 do
 if pos('http://mysite/index.php?recall=',link.item(i).href)<>0 then ListBox1.Items.Add(link.item(i).href);

end;
а как теперь осуществить переход по каждой ссылке?
 
Ответить с цитированием

  #8  
Старый 31.08.2009, 19:47
akahaos
Познающий
Регистрация: 05.05.2008
Сообщений: 43
С нами: 9482319

Репутация: 2
По умолчанию

for i:=0 to listbox1.items.count-1 do
WebBrowser1.navigate(listbox1.items[i]);

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

for i:=0 to listbox1.items.count-1 do begin
WebBrowser1.navigate(listbox1.items[i]);
while not complete do application.processmessage;

complete присваивай в true в событии браузера OnComplete или чето такое
 
Ответить с цитированием

  #9  
Старый 31.08.2009, 21:40
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
С нами: 9227388

Репутация: 180
По умолчанию

Немного оффтоп:
Application.ProcessMessages конечно, штука хорошая, но лучше всю работу с сетью вынеси в отдельный поток, не прописывай все в основном, чтобы прога не подвисала во время работы.
 
Ответить с цитированием

  #10  
Старый 01.09.2009, 07:07
woolfon
Новичок
Регистрация: 04.05.2008
Сообщений: 7
С нами: 9484548

Репутация: 0
По умолчанию

Цитата:
Сообщение от akahaos  
for i:=0 to listbox1.items.count-1 do
WebBrowser1.navigate(listbox1.items[i]);

или не навигате там, лень делфю запускать, ну вобщем смысл понятен.
вообщем ставлю я этот код на новую кнопку, переходит только по первой ссылке из списка, далее при нажатии просто обновляется страница, но переходов уже нет, наверное потому-то ссылка осталось в листбоксе, и он пробует перейти по ней еще раз, но она уже не валид)

Цитата:
а чтобы он ждал пока первая загрузится и тока потом переходил к загрузке следущей делай так:

for i:=0 to listbox1.items.count-1 do begin
WebBrowser1.navigate(listbox1.items[i]);
while not complete do application.processmessage;

complete присваивай в true в событии браузера OnComplete или чето такое
здесь я вообще не разобрался, значение присвоил, на строку while not complete do application.processmessage; компилятор жалуется,
там вместо комплит я писал что-то вроюде ondownloadcomplete, ни каких результатов, и на application.processmessage тоже ошибка(((
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скачать Delphi 7, помощь. _casper_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 20 08.12.2009 04:54
Нужна помощь!! snAKe33 Болталка 0 08.06.2009 23:47
Нужна ваще помощь XP jks Windows 12 22.01.2009 00:33
Шахматы на Delphi нужна помощь. Mobile С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 3 01.12.2008 02:53
Программа на Delphi. Помощь нужна. Happer С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 7 25.03.2006 21:08



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.