Отправка форм в visual basic
Почти на всех сайтах в интернете есть формы, т.е. определённые текстовыеполя, CheckBox"ы (множественный выбор), кнопки и т.д. Примером формы может служить формадля отправки сообщения, например, в службу поддержки какого-то сайта. Для этой формынеобходимо текстовое поле с именем автора, с его обратным e-mail"ом, с сообщением, а такжекнопка для отправки сообщения. После того, как пользователь нажимает на эту кнопку, вбраузере загружается страница с подтверждением отправки письма.
Существует два метода дляотправки сообщений: GET и POST. Я расскажу как устроен метод GET и как с помощью своейпрограммы отправлять сообщения.
Каждый элемент формы имеет свои свойства, двумя из которых являются имя изначение. Например у текстового поля может быть имя "e_mail_text", а значение"your@e-mail.ru". У CheckBox"а имя может быть "Check1", а значение "1", т.е. "галочка" стоит и т.д.Также у всех объектов есть свой тип. Например, кнопка - button, текстовоеполе - text, кнопка для отправки - submit, а кнопка для очистки полей - reset. Такжесуществуют объекты типа hidden, которые не видны на странице, но также имеют имя изначение.
Так вот после того, как пользователь нажмёт на кнопку отправки, браузергенерирует адрес страницы, на которую потом переходит пользователь. Вначале строкиидёт адрес до CGI скрипта с вопросительным знаком на конце, например:
http://www.someserver.ru/cgi-bin/cgi_script.cgi?
Затем идёт имя первого элемента формы, после чего ставиться "=" и пишетсяего значение, потом "&" и имя второго элемента и т.д. В случае с отправкой сообщения вслужбу поддержки строка будет иметь вид:
http://www.someserver.ru/cgi-bin/cgi_script.cgi?author=Some%20User&e-mail=user_email%40domen.ru&message=Some%20Message
Здесь "Some User" - имя автора, "user_mail@domen.ru" - обратный e-mail, а "Some Message" - сообщение.Из-за того, что в адресе не могут быть пробелы и другие специфические символы, их заменяют на символ "%", после которогоидёт номер ASCII символа в 16ти разрядном виде. С этой страницы можно скачатьисходники специально сделанной для этого программы Char2Hex.
Генерировать такую строку из своей программы достаточно просто, поэтому осталось только научитьсяоткрывать этот адрес в обозревателе.
Для этого я разберу пример на самой простой программе, например для поиска на Яndex"е. Для этогосоздаёте новый проект и поместите на него текстовое поле с кнопкой и измените их свойства text и caption как показанона рисунке:
Теперь напишем код для кнопки:
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://" свидетельствуют о том, что это интернет-адрес, и нужно открывать браузер.
Теперь запустите программу и введите какую-нибудь строку для поиска и нажмите "Поиск". Должензагрузиться браузер, в котором, после подключения к интернету, должна появиться страница с результатами поиска.
Программу Yandex Search можно скачать отсюда.