Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > заполнить форму через Дельфи


Автор: abala 8.9.2004, 16:53
как програмно симитировать нажатие кнопки, ссылки и заполнения поле ввода в работающем IE, (автозаполнение)

Автор: Illusion Dolphin 8.9.2004, 17:14
Цитата
работающем IE

А какое тебе именно окно нужно? Если их открыто не одно, а 10, то по какому критерию выбирать? Если у тебя есть хэндл окна, то тогда посмотри, есть такие проги, которые показывают в рунтайм классы окон, возможно, что, например, окно ввода пути имеет свой клас определённый, тогда с помощью findWindow его можно найти, а дальше посылать сообщение нужно.

Автор: p0s0l 9.9.2004, 00:23
Если надо заполнить форму, то вот набросал примерчик:
Код
uses
 ..., SHDocVw, ActiveX, MSHTML;

procedure TForm1.FormCreate(Sender: TObject);
begin
 CoInitialize(nil);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
 isw : IShellWindows;
 wb2 : IWebBrowser2;
 doc : IHTMLDocument2;
 col : IHTMLElementCollection;
 el : IHTMLElement;
 i : integer;
 
begin

 isw := CoShellWindows.Create;
 wb2 := isw.Item(0) as IWebBrowser2;
 doc := wb2.Document as IHTMLDocument2;

// заполнение полей ввода
 col := doc.all.tags('input') as IHTMLElementCollection;
 for i := 0 to col.length-1 do
 begin
   el := col.item(i, 0) as IHTMLElement;
   if el.getAttribute('type', 0) = 'text' then
     el.setAttribute('value', 'input: ' + IntToStr(i), 0);
 end;

// заполнение textarea
 col := doc.all.tags('textarea') as IHTMLElementCollection;
 for i := 0 to col.length-1 do
 begin
   el := col.item(i, 0) as IHTMLElement;
   el.setAttribute('value', 'textarea: ' + IntToStr(i), 0);
 end;

// включение checkbox'ов
 col := doc.all.tags('input') as IHTMLElementCollection;
 for i := 0 to col.length-1 do
 begin
   el := col.item(i, 0) as IHTMLElement;
   if el.getAttribute('type', 0) = 'checkbox' then
     el.setAttribute('checked', 1, 0);
 end;

end;
В этом примере берётся первый попавшийся IE.
В isw.Count содержится количество окон IE, просматривай их всех, и работай только с нужным.
Определить то это окно или нет, можно через wb2.HWND...


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)