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


Автор: Itsys 3.8.2009, 10:48
Добрый день,

Подскажите пожалуйста, можно ли каким-либо образом подключиться к открытому окну браузера и отправить post запрос, соответственно указав реквизиты и т.д. и т.п. 

Автор: KSURi 3.8.2009, 10:58
Раз ОС не указали, пускай будет винда.
Можно через WinAPI (работа с окнами). Также, может быть, это реализуемо через OLE интерфейс к IE. Тут надо с MSDN проконсультироваться.
Кстати, если на компьютере, где это будет выполняться, будет установлен антивирус - скорее всего он заблокирует такие действия)

Автор: Itsys 3.8.2009, 11:00
Винда.

т.к. приложение локальное, то в антивире отключу проверку на него.

щас гляну в MSDN чего там про OLE IE написано.

Автор: Itsys 3.8.2009, 11:34
На другом форуме нашел, как оправить get запрос:
Код

use Win32::OLE qw(EVENTS);
my $URL = "http://www.google.com";
my $IE  = Win32::OLE->new("InternetExplorer.Application")
    || die "Could not start Internet Explorer.Application\n";
Win32::OLE->WithEvents($IE,\&Event,"DWebBrowserEvents2");
$IE->{visible} = 1;
$IE->Navigate($URL);


кто-нибудь может подскажет как отправить post запрос?

Автор: sir_nuf_nuf 3.8.2009, 11:35
Itsys, развейте мои сомнения.. Вам именно доступ к браузеру нужен ?
Если просто отправить POST запрос - есть более простые вещи. LWP, например.

Автор: Itsys 3.8.2009, 11:42
sir_nuf_nuf, 
именно к браузеру.

Автор: Itsys 5.8.2009, 09:03
Ап, очень нужно... smile 

Автор: shamber 5.8.2009, 10:37
посмотритеhttp://www.eggheadcafe.com/articles/20011215.asp

Автор: Itsys 5.8.2009, 11:08
Я тоже долго копал и нашел на http://msdn.microsoft.com/en-us/library/aa752133(VS.85).aspx, не понятно, что занчит
Код

PostData
[in] A pointer to a VARIANT of type VT_ARRAY|VT_UI1

что это за тип такой "VT_ARRAY|VT_UI1"?

Автор: shamber 5.8.2009, 11:39
По моей ссылке ходил? там есть пример.

Код

IE.Navigate "about:blank" '<-- You have to do this first!!!!
IE.Document.body.innerHTML="<Form name=frm1 id=frm1 action=http://localhost/getform.asp METHOD=POST><input type=text name=data1 value=" & escape(formdata) &"><input type=submit></form>"
IE.Document.frm1.submit()

Автор: Itsys 5.8.2009, 15:35
Ходил, это не выход....

Автор: KSURi 5.8.2009, 20:56
Мы должны догадаться почему это не выход?

Автор: shamber 6.8.2009, 07:21
Itsys, присоединяюсь к вопросу KSURi

Автор: Itsys 6.8.2009, 20:45
Хм... как бы объяснить...

Есть сайт, на котором выполнятеся последовательность post запросов, причем, насколько я догадываюсь, проверяются кукисы, которые устанавливаются конце каждой сессии, запускаются JS скрипты. Т.е. эмулировать все это внешними страницами очень муторно. Поэтому мне бы хотелось, чтобы зарузилась страница, отправил запрос - загрузилась следующая и т.д.

Хотя... можно зарузить страницу, выдрать от туда кусок DOMа и сдеделать на основе ео формуи послать ее.. тоже вариант. Попробую так.

Добавлено через 21 секунду
Будем считать вопрос решенным.

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