Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как автоматически заполнить поля формы в IE

Delphi , Интернет и Сети , Браузер

Как автоматически заполнить поля формы в IE

Автор: http://www.swissdelphicenter.ch

{
  This example shows how to automatically fill in a search string
  in the "Search Tip" page and click the search button.
}

uses
  MSHTML_TLB;

// first navigate to tipspage

procedure TForm1.Button1Click(Sender: TObject);
begin
  Webbrowser1.Navigate('http://www.swissdelphicenter.ch/en/tipsuchen.php');
end;

// Try to access IE instance and fill out the search field with
// a text and click the search button

procedure TForm1.Button3Click(Sender: TObject);
var
  hIE: HWND;
  ShellWindow: IShellWindows;
  WB: IWebbrowser2;
  spDisp: IDispatch;
  IDoc1: IHTMLDocument2;
  Document: Variant;
  k, m: Integer;
  ovElements: OleVariant;
  i: Integer;
begin
  ShellWindow := CoShellWindows.Create;
  // get the running instance of Internet Explorer
  for k := 0 to ShellWindow.Count do
  begin
    spDisp := ShellWindow.Item(k);
    if spDisp = nil then
      Continue;
    // QueryInterface determines if an interface can be used with an object
    spDisp.QueryInterface(iWebBrowser2, WB);

    if WB <> nil then
    begin
      WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
      if iDoc1 <> nil then
      begin
        WB := ShellWindow.Item(k) as IWebbrowser2;
        begin
          Document := WB.Document;

          // count forms on document and iterate through its forms
          for m := 0 to Document.forms.Length - 1 do
          begin
            ovElements := Document.forms.Item(m).elements;
            // iterate through elements
            for i := 0 to ovElements.Length - 1 do
            begin
              // when input fieldname is found, try to fill out
              try
                if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and
                  (CompareText(ovElements.item(i).type, 'text') = 0) then
                begin
                  ovElements.item(i).Value := 'FindWindow';
                end;
              except
              end;
              // when Submit button is found, try to click
              try
                if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and
                  (CompareText(ovElements.item(i).type, 'SUBMIT') = 0) and
                  (ovElements.item(i).Value = 'Search') then
                    // Suchen fьr German
                begin
                  ovElements.item(i).Click;
                end;
              except
              end;
            end;
          end;
        end;
      end;
    end;
  end;
end;

Привет! Вот перевод текста на русский язык:

Код - пример автоматического заполнения строки поиска и нажатия кнопки "Поиск" на веб-странице с помощью Internet Explorer (IE) в Delphi.

Вот шаг за шагом, что код делает:

  1. Первый процедура Button1Click открывает страницу "Search Tip" (http://www.swissdelphicenter.ch/en/tipsuchen.php) при нажатии кнопки.
  2. Вторая процедура Button3Click пытается получить доступ к экземпляру IE и заполнить поле поиска текстом, а затем нажать кнопку "Поиск".

Вот шаг за шагом, как это работает:

  • Он получает экземпляр Internet Explorer (IE) с помощью CoShellWindows.Create.
  • Он проходит через все работающие экземпляры IE с помощью ShellWindow.Item(k) и проверяет, является ли каждый экземпляр не null.
  • Для каждого экземпляра он запрашивает интерфейс IWebBrowser2 (WB) с помощью spDisp.QueryInterface(iWebBrowser2, WB). Если это успешно, то продолжает заполнять форму.
  • Он получает экземпляр документа HTML (Document) из интерфейса IWebBrowser2 и проходит через его формы с помощью for m := 0 to Document.Forms.Length - 1 do.
  • Для каждой формы он проходит через ее элементы с помощью for i := 0 to ovElements.Length - 1 do. Когда находит поле ввода с именем "FindWindow", заполняет поле.
  • Когда находит кнопку отправки с значением "Search", нажимает кнопку.

Альтернативное решение:

Вместо использования MSHTML_TLB и ручного прохода по HTML-элементам, можно использовать компонент TWebBrowser в Delphi и его встроенные методы для заполнения форм и нажатия кнопок. Это более простое и легкое в обслуживании решение.

Вот пример:

procedure TForm1.Button3Click(Sender: TObject);
var
  WebBrowser: TWebBrowser;
begin
  WebBrowser := WebBrowser1; // предположим, что у вас есть компонент TWebBrowser на вашем форм

   // Перейти на страницу
  WebBrowser.Navigate('http://www.swissdelphicenter.ch/en/tipsuchen.php');

   // Подождать, пока страница не загрузится
  while not WebBrowser.ReadyState = vsReady do
    Application.ProcessMessages;

   // Заполнить поле поиска
  WebBrowser.Document.Forms[0].Elements['FindWindow'].Value := 'FindWindow';

   // Нажать кнопку "Поиск"
  WebBrowser.Document.Forms[0].Elements['Search'].Click;
end;

Код более компактен и легче для чтения, так как он использует встроенные методы компонента TWebBrowser для взаимодействия с веб-страницей.

Автоматическое заполнение полей формы в Internet Explorer с помощью Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-12 14:54:08/0.0039370059967041/0