Заполнение полей в форме Internet Exploer

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
mvandrew
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 21.09.2002 (Сб) 11:29

Заполнение полей в форме Internet Exploer

Сообщение mvandrew » 24.04.2003 (Чт) 14:50

Подскажите пожалуйста, как можно заполнить поля в форме Интернет Explorer а потом эти данные отослать, грубо говоря эмитировать нажатие кнопки Submit. Или подскажите где можно взять документацию по этим вопросам. Заранее благодарю.

Webmax
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 12.04.2003 (Сб) 10:01

Сообщение Webmax » 24.04.2003 (Чт) 18:02

Попробуй так:

Код: Выделить всё
Dim objDoc As Object
Set objDoc = WebBrowser1.Document
objDoc.frm.txt1.Value = "знач1"
objDoc.frm.txt2.Value = "знач2"
objDoc.frm.submit


Здесь: frm - имя формы (<form name=...), txt1 и txt2 - названия полей

Edward
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 14.08.2002 (Ср) 11:54
Откуда: Москва

Сообщение Edward » 25.04.2003 (Пт) 11:41

поищи в этом форуме , такие темы были, просто заново писатьне охота.
Удачи.
С уважением.

mvandrew
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 21.09.2002 (Сб) 11:29

Сообщение mvandrew » 25.04.2003 (Пт) 17:17

Искал!.. Но, видно, плохо. Если такие ответы есть, то я их не видел, так бы даже и вопроса то не задавал! :roll:

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 25.04.2003 (Пт) 19:10

Небольшая статейка, но я в ней так и не разобрался. Если разберёшся- пиши
Почти на всех сайтах в интернете есть формы, т.е. определённые текстовые поля, CheckBox'ы (множественный выбор), кнопки и т.д. Примером формы может служить форма для отправки сообщения, например, в службу поддержки какого-то сайта. Для этой формы необходимо текстовое поле с именем автора, с его обратным e-mail'ом, с сообщением, а также кнопка для отправки сообщения. После того, как пользователь нажимает на эту кнопку, в браузере загружается страница с подтверждением отправки письма.



Большинство людей, когда слышат "метод POST или GET", то у них возникают ассоциации с HTML-формами и PERL. И это не случайно - эти два метода передачи данных чаще всего используют в WEB-сайтах. Но как оказалось один из этих методов можно использовать и в VB. Я расскажу как устроен метод GET и как с помощью своей программы отправлять сообщения.

Каждый элемент формы имеет свои свойства, двумя из которых являются имя и значение. Например у текстового поля может быть имя "e_mail_text", а значение "your@e-mail.ru". У CheckBox'а имя может быть "Check1", а значение "1" (в отличии от VB в HTML "галочка" может принимать значение не только "1", но и любоё другое, например "yes"). Также у всех объектов есть свой тип. Например, кнопка - button, текстовое поле - text, кнопка для отправки - submit, а кнопка для очистки полей - reset. Также существуют объекты типа hidden, которые не видны на странице, но также имеют имя и значение.

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

http://www.someserver.ru/cgi-bin/cgi_script.cgi?

Затем идёт имя первого элемента формы, после чего ставиться "=" и пишется его значение, потом "&" и имя второго элемента и т.д. В случае с отправкой сообщения в службу поддержки строка будет иметь вид:

http://www.someserver.ru/cgi-bin/cgi_sc ... %20Message

Здесь "Some User" - имя автора, "user_mail@domen.ru" - обратный e-mail, а "Some Message" - сообщение. Из-за того, что в адресе не могут быть пробелы и другие специфические символы (к которым относятся и буквы русского алфавита), их заменяют на символ "%", после которого идёт номер ASCII символа в 16ти разрядном виде.

Для этого можно разобрать пример на самой простой программе, например для поиска на Яndex'е. Для этого создаёте новый проект и поместите на него текстовое поле с кнопкой.

Теперь напишем код для кнопки:

Private Sub Command1_Click()
'Объявляем переменную для хранения сгенерированной строки
Dim SearchString As String
'Переменная для текущего символа
Dim Char As Byte
'Для цикла For
Dim I As Integer

'Путь до CGI файла и имя параметера - начальное
'значение переменной SearchString
SearchString = "http://www.yandex.ru/yandsearch?text="

'Перебираем все символы и, в зависимости от того, с каким
'символом работаем, добавляем его к строке поиска
For I = 1 To Len(Text1)
Char = Asc(Mid(Text1, I, 1))
If Char > 96 And Char < 123 Then
SearchString = SearchString + Mid(Text1, I, 1)
ElseIf Char > 64 And Char < 91 Then
SearchString = SearchString + Mid(Text1, I, 1)
ElseIf Char = 32 Then
SearchString = SearchString + "+"
Else
SearchString = SearchString + "%" + Hex(Asc(Mid(Text1, I, 1)))
End If
Next I

'Вызываем функцию ExecuteFile и передаём ей строку поиска.
ExecuteFile Me.hWnd, SearchString, 1
End Sub

Теперь создаём новый модуль и пишем:

Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Function ExecuteFile(ExecuteFileProgramHWND As Long, ExecutableFile _
As String, Method As Integer)
ShellExecute ExecuteFileProgramHWND, "Open", ExecutableFile, _
vbNullString, Empty, Method
End Function


Эта функция вызывает связанное с открываемой строкой приложение. Например, если Вы открываете файл "c:\myfile.mp3", то загружается программа, проигрывающая mp3 файлы. Тут тоже самое: начальные символы "http://" свидетельствуют о том, что это интернет-адрес, и нужно открывать браузер.

Теперь запустите программу и введите какую-нибудь строку для поиска и нажмите "Поиск". Должен загрузиться браузер, в котором, после подключения к интернету, должна появиться страница с результатами поиска.

ShadowCaster
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 24.05.2002 (Пт) 10:52

...

Сообщение ShadowCaster » 29.04.2003 (Вт) 22:43

Только есть 1 проблема: скрипт может и не принимать GET-запрос, а только POST-запрос... :?

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Re: ...

Сообщение GoGosha » 30.04.2003 (Ср) 11:31

ShadowCaster писал(а):Только есть 1 проблема: скрипт может и не принимать GET-запрос, а только POST-запрос... :?


Взято из FAQ старого форума писал(а):Надо добавь WinSock Control и кнопку. В код формы вставить:

Winsock1.Protocol = sckTCPProtocol 'Установка протокола
Winsock1.Connect "имя_сервера", 80 'подключение через порт 80
While Not Winsock1.State = 7 'Ждем, пока подключится.
DoEvents '
Wend '

Parametrs="параметр1=значение&параметр2=значение" 'сохраняем параметры в 'переменной

Далее все зависит от того, каким методом передавать. Если через метод POST, то:

Winsock1.SendData "POST /адрес_скрипта HTTP/1.1" & vbCrLf
Winsock1.SendData "Content-Type: application/x-www-form-urlencoded" & vbCrLf
Winsock1.SendData "Host: имя_сервера" & vbCrLf
Winsock1.SendData "Content-Length: " & len(Parametrs) & vbCrLf & vbCrLf
Winsock1.SendData Parametrs & vbCrLf

Если через метод GET, то:

Winsock1.SendData "GET /адрес_скрипта?" & Parametrs & " HTTP/1.0" & vbCrLf & vbCrLf

Далее сервер запустит скрипт и передаст данные, еоторые выдаст скрипт, т.е страницу, которая появилась бы в браузере. Если надо принять эти данные, то добавь еще это:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
Winsock1.GetData Data
End Sub

В переменной Data будут только что принятые данные, сохрани их где-нибудь (например в другой переменной), можешь делать с ними, что захочешь. Сначала сервер выдаст ответ типа:

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Fri, 22 Feb 2002 11:12:20 GMT
Connection: Keep-Alive
Content-Length: 8
Content-Type: text/html
Set-Cookie: ASPSESSIONIDQGQQQLBQ=DFPBBDBDJOGMHODFDFALACNK; path=/
Cache-control: private

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

Модератор
http://www.vbstreets.ru/ / moderator@vbstreets.ru

... Почетные награды: [*], [+], [!]. Все еще впереди...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 78

    TopList