Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2012, 20:56   #1
Mobiel
 
Регистрация: 06.02.2012
Сообщений: 7
По умолчанию Как узнать что страница в Webbroswer загружена?

Написал примерно такой код:
Код:
WebBrowser1.Navigate('http://vk.com/drug2012');
sleep(10000);
webbrowser1.oleobject.document.getelementbyid('post_field').value:=Edit3.Text;
WebBrowser1.OleObject.Document.GetElementByID('send_post').Click;
но Sleep(10000); тут как то не к месту ведб время загрузки страницы разное
зачем тормозить процес?...
подскажите как сделать что бы только после полной загрузки страницы
выполнялось
Код:
webbrowser1.oleobject.document.getelementbyid('post_field').value:=Edit3.Text;
WebBrowser1.OleObject.Document.GetElementByID('send_post').Click;
Пожайлуста подскажите...
Mobiel вне форума Ответить с цитированием
Старый 13.03.2012, 21:07   #2
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    procedure WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  var
  download:boolean:false;
implementation

{$R *.dfm}

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
dowload:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://vk.com/drug2012');
repeat until download;
webbrowser1.oleobject.document.getelementbyid('post_field').value:=Edit3.Text;
WebBrowser1.OleObject.Document.GetElementByID('send_post').Click;
end;

end.
Кольша вне форума Ответить с цитированием
Старый 13.03.2012, 21:19   #3
Mobiel
 
Регистрация: 06.02.2012
Сообщений: 7
По умолчанию

Ну раз уж так быстро ответили? как отловить каптчу, вывсети ее для ввода в ручную(а программу в это время поставить на паузу...)
Mobiel вне форума Ответить с цитированием
Старый 13.03.2012, 21:19   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    procedure WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
webbrowser1.oleobject.document.getelementbyid('post_field').value:=Edit3.Text;
WebBrowser1.OleObject.Document.GetElementByID('send_post').Click;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://vk.com/drug2012');
end;

end.
почему все так любят проц грузить...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.03.2012, 21:21   #5
Mobiel
 
Регистрация: 06.02.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
почему все так любят проц грузить...
В смысле проц грузить? А как по другому сделать?
Mobiel вне форума Ответить с цитированием
Старый 13.03.2012, 21:23   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

активное ожидание, это плохо если можно обойти.(оно грузит проц излишне)
пример того как надо я показал, если нужно ждать события, то проще в нем и выполнить действия тогда.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.03.2012, 15:32   #7
navalih
 
Регистрация: 15.05.2011
Сообщений: 5
По умолчанию

PHP код:
procedure TForm1.wb1DocumentComplete(ASenderTObject;
  const 
pDispIDispatch; var URLOleVariant);
begin
 
if URL=wb1.LocationURL then
  begin
    код
.....
  
end;
end
navalih вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать, что страница с JS (AJAX)? Lindemann66 Qt и кроссплатформенное программирование С/С++ 1 27.10.2011 11:27
WebBrowser как узнать что страница полностью догрузилась Comer_Jus Работа с сетью в Delphi 6 01.07.2011 09:46
idhttp как узнать что страница скачана/загружена до конца? Alar Работа с сетью в Delphi 10 29.03.2011 16:31
как узнать что страница в WebBrowser загружена designer999 Работа с сетью в Delphi 2 05.05.2010 21:12
Узнать какая страница загружена. Port 111 Работа с сетью в Delphi 6 14.01.2009 22:26