Консультация № 168867
03.06.2009, 16:52
0.00 руб.
0 3 1
Уважаемые эксперты!
Объясните плиз как можно из своей прграммы попасть в окно редактирования текста на веб-страничке? Т.е. есть поле ввода текста, каптча и кнопка "Отправить", мне надо чтобы текст из моей программы вставился в поле ввода, чтобы мне осталось только вбить каптчу и нажать на кнопку.

Обсуждение

Неизвестный
04.06.2009, 09:14
общий
Web-страничка должна быть открыта с помощью Internet Explorer или подойдет открытие через компонент TWebBrowser из состава Delphi?
Неизвестный
04.06.2009, 09:21
общий
Ну в идеале хотелось бы в любом браузере (сам использую Оперу), но если это невозможно, то пусть будет компонент дельфёвый.
Неизвестный
04.06.2009, 09:45
общий
это ответ
Здравствуйте, Maximus777.
Тогда опишу работу через TWebBrowser.
Функция заполнения формы в приложении.

Пример использования:
procedure TForm1.Button1Click(Sender: TObject);
begin
Webbrowser1.Navigate('http://xxx.htm'); {адрес web страницы}
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
if FillForm(WebBrowser1, 'name', 'нужный нам текст') = False then {name - имя поля на web-странице}
ShowMessage('Error. Field not available or no Form found.');
end;

Будут вопросы - пишите в форум.

Приложение:
function TForm1.FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean;
var
i, j: Integer;
FormItem: Variant;
temp: string;
begin
Result := False;
//если нет форм
if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then
begin
Exit;
end;
//count forms on document
for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do {проход по всем формам web-страницы}
begin
FormItem := WebBrowser.OleObject.Document.forms.Item(I);

for j := 0 to FormItem.Length - 1 do
begin
temp:= FormItem.Item(j).Name; {считывание названия поля} {в режиме отладки через переменную temp можно определить имена полей на странице}
try
//если поле совпадает с требуемым то заполняем его
if FormItem.Item(j).Name = FieldName then
begin
FormItem.Item(j).Value := Value;
Result := True;
end;
except
Exit;
end;
end;
end;
end;

Основа:
http://articles.org.ru/cn/showdetail.php?cid=7410
5
Отличный пример. Не проверял в действии, но думаю что работает как надо, ввиду его простоты. Теперь всё-таки попробую найти решение для связи с внешними браузерами.
Форма ответа