Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найти HIDDEN внутри определенной формы 
:(
    Опции темы
Borland_Delphi_6
Дата 21.6.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

Репутация: нет
Всего: 20



Приветствую. Имеется WebBrowser с загруженной страницей, в коде которой есть несколько тегов <form>, action'ы которых различаются. Необходимо найти все теги <input type="hidden"> внутри определенной формы.

Что у меня получилось сделать:
1. Нахождение нужного номера формы по ее свойству action
Код

........
var
  Doc: IHTMLDocument2;
  Form: IHTMLFormElement;
  i:integer;
begin
  Doc := Wb1.Document as IHTMLDocument2;
  for i:=0 to doc.forms.length-1 do
  begin
  if Supports(doc.forms.Item(1,0),IHTMLFormElement,Form) then
  Memo1.Lines.Add(Form.Action+' '+IntToStr(i));
  end;
end;


2. Нахождение HIDDEN'ов на всей странице:

Код

procedure TForm1.Button6Click(Sender: TObject);
var
  Hidden_Col: IHTMLElementCollection;
  doc: IHTMLDocument2;
  Hidden: IHTMLInputHiddenElement;
  i: integer;
begin
  doc := Wb1.Document as IHTMLDocument2;
  Hidden_Col := doc.all.tags('INPUT') as IHTMLElementCollection;

  for i:=0 to Hidden_Col.length-1 do
  begin
  if Supports(Hidden_Col.item(i,0),IHTMLInputHiddenElement,Hidden) then
  Memo1.Lines.Add(Hidden.name+' = '+Hidden.value);
  end;

end;


А вот связать эти два этапа не получается :( Подскажите, пожалуйста.


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
MetalFan
Дата 21.6.2008, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 3
Всего: 128



дай адрес странички, на которой выполняются нужные условия) для экспериментов


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Borland_Delphi_6
Дата 21.6.2008, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

Репутация: нет
Всего: 20



MetalFan, залил сюды: http://videobonus.ru/test/ smile


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
MetalFan
  Дата 22.6.2008, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 3
Всего: 128



подход такой - получаешь форму, берешь опять же tags по имени input и ищешь нужный тип.
вот накидал пример функции:
Код

function FindAllHiddenByForm( ADocument: IHTMLDocument2; const AFormName: string; var AList: TInterfaceList): Boolean;
var
  lForms: IHTMLElementCollection;
  lForm: IHTMLFormElement;
  i: Integer;
  lInputs: IHTMLElementCollection;
  lInput: IHTMLInputElement;
begin
  Result := False;
  if not Assigned( ADocument ) or
     not Assigned( AList ) or
     (AFormName = '' ) then
    Exit;
    if not Assigned( ADocument ) then Exit;
  lForms := ADocument.all.tags('form') as IHTMLElementCollection;
  if not Assigned( lForms ) then Exit;
  for i := 0 to pred(lForms.length) do
    if Supports( lForms.item(i, i), IID_IHTMLFormElement, lForm ) and
      (lForm.Action = AFormName) then
        break
      else
        lForm := nil;
  if not Assigned(lForm) then Exit;
  lInputs := lForm.tags('input') as IHTMLElementCollection;
  if not Assigned( lInputs ) then Exit;
  for i := 0 to pred( lInputs.Length ) do
    if Supports( lInputs.item(i, i), IID_IHTMLInputElement, lInput ) and
       (lInput.type_ = 'hidden') then
         AList.Add( lInput );
  Result := AList.Count > 0;
end;


в аттаче пример использования

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  WB.rar 1,60 Kb


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.