Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WebBrowser, WebBrowser 
:(
    Опции темы
[m][a][n]
  Дата 26.9.2004, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 25.8.2004

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



Всем Добрый Вечер!
Меня интересует вопрос следующего содержания:
Как можно программно с помощью компонента WebBrowser заполнить поля в браузере?
Тоесть к примеру:
сайт www.mail.ru открыть через WebBrowser ... нажать Button1 и чтобы пасс и логин сам по себе ввелся... (уже предворетельно заданный)
Как так сделать?
PM MAIL   Вверх
Alex
Дата 26.9.2004, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Код
{  
 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;  


Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Jey_k
Дата 26.9.2004, 23:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


WEB-командир
****


Профиль
Группа: Комодератор
Сообщений: 4149
Регистрация: 16.11.2003
Где: Москва

Репутация: 1
Всего: 61



оффтоп: ВОТ ТАК И ПОЯВЛЯЮТСЯ БОТЫ


--------------------
PM MAIL WWW   Вверх
[m][a][n]
Дата 27.9.2004, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 25.8.2004

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



Супер!
Большое спасибо!
А можно, если не трудно, конкретный пример привести?
Взять какой небудь сайт и на нем показать, опять же, если не сложно всё это...
Зарание спасибо!
Добавлено @ 18:00
Млин, тут же уже приводится конкретный пример!
Всем большое спасибо!
Этот топик можно прикрыть!
Добавлено @ 18:06
Млин, рано я обрадовался!
Как подключить или где взять это:

uses
MSHTML_TLB;

Зарание спасибо!
PM MAIL   Вверх
od0201
Дата 30.10.2012, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 16.1.2009

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



форма заполнилась, но только в открытом дополнительно ИЕ, а в программе нет. 
Подскажите причину и как устранить?

spDisp равен nil Если страница запущена в TWebBrowser


Это сообщение отредактировал(а) od0201 - 30.10.2012, 17:05
PM MAIL   Вверх
MetalFan
Дата 30.10.2012, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



ого, какая восставшая из мертвых у нас тут.
Цитата(od0201 @  30.10.2012,  16:46 Найти цитируемый пост)
но только в открытом дополнительно ИЕ, а в программе нет. 

так пример это и делает как раз...
тебе нужно получить интерфейс IWebBrowser от своего TWebBrowser, и дальше плясать от него.

Это сообщение отредактировал(а) MetalFan - 30.10.2012, 22:57


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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 16.1.2009

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



Цитата

ого, какая восставшая из мертвых у нас тут.

Я не думаю что вы будете в восторге, если я начну плодить темы-двойники.
Цитата

так пример это и делает как раз...
тебе нужно получить интерфейс IWebBrowser от своего TWebBrowser, и дальше плясать от него.

как раз пример ничего и не делает, в чистом виде....
ShellWindow.Count=0 (т.е. находит 1 закладку)
spDisp = nil (не есть хорошо и на выход)

если же я при этом открываю ИЕ, и задаю ему ту же страницу что и в TWebBrowser, то...
ShellWindow.Count=1 (т.е. находит 2 закладки)
 и spDisp для  ИЕ != nil ,  и поля в ИЕ заполняются, а для TWebBrowser spDisp = nil   и для него програма не заполняет поля.

З.Ы. Может вы и правы, но я Вашей мысли не понял, я с Дельфи слабо знаком и возможно чего-то не понимаю. Но, интуиктивно,  я подозреваю что у меня что-то не установленно/не включено.... а по идее толжно также отрабатывать как и для ИЕ
PM MAIL   Вверх
MetalFan
Дата 31.10.2012, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(od0201 @  31.10.2012,  11:05 Найти цитируемый пост)
Я не думаю что вы будете в восторге, если я начну плодить темы-двойники.

а я не возражал против "поднятия" данной темы) просто очень уж она древняя оказалась)


Цитата(od0201 @  31.10.2012,  11:05 Найти цитируемый пост)
ShellWindow.Count=0 (т.е. находит 1 закладку)
spDisp = nil (не есть хорошо и на выход)

Это все вообще пропустить вплоть до начала работы с IWebBrowser2 интерфейсом.
Ссылку на этот интерфейс получать не приведенным в коде способом, а от вашего компонента TWebBrowser через св-во ControlInterface (на сколько я помню)


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

Запрещается!

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

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

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


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

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


 




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


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

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