Visual Basic

Кратко о приложениях для сетей. Windows API

Показывать лекцию целиком

Кратко о приложениях для сетей

При разработке приложений для сетей могут использоваться сочетания кода языка гипертекста, документы ActiveX и т.д. Ограничимся написанием программы-Browser; для создания таких приложений разработан элемент управления WebBrowser, обладающий методами, обеспечивающими, например, навигацию; событиями, связанными с загрузкой файлов и т.д. После создания Browser'a его возможности могут интегрироваться в приложение и пользователь получает доступ в сеть из своей пользовательской Visual Basic-программы.

Практическая работа 47. Создание Browser

  • Последовательность действий:
  • вывести элемент управления WebBrowser: меню Проект $$\to$$ Компоненты $$\to$$ Microsoft Internet Controls $$\to$$ OK, вывести его на форму, рис. 7.1, центр,
  • создать на форме элемент управления StatusBar: меню Проект $$\to$$ Компоненты $$\to$$ Microsoft Windows Common Controls $$\to$$ OK $$\to$$ вывести на форму с панели элементов управления элемент управления StatusBar, рис. 7.1 внизу,
  • свойству Style, созданного на форме элемента управления (рис. 7.1 вверху) СomboBox присвоить значение 0; очистить свойство Text,
  • создать 5 объектов CommandButton: Command1, Caption = New URL; Command2, Caption = STOP; Command3, Caption = HOME; Command4, Caption = FORWARD; Command5, Caption = BACK. Cвойствам Picture присвоить значения - имена файлов с рисунками, см. рис. 7.1 вверху,
  • найти (меню Windows Пуск $$\to$$ Поиск) файлы tearoom.htm, readmevb.htm, Register.htm (или другие файлы формата *.htm, имеющиеся в наличии), скопировать их на дискету,
  • ввести код, данный ниже, пояснения даны под комментариями,
  • стартовать проект; в поле элемента управления WebBrowser выводится стартовый файл (здесь) Running Bithday.htm, см. код; в поле комбинированного списка имеется одна запись "Running Bithday", в поле объекта StatusBar - соответствующая запись,
  • ввести в текстовое поле СomboBox последовательно имена файлов и соответствующие пути: tearoom.htm, readmevb.htm, Register.htm, нажимая после каждого ввода командную кнопку Command1 (New URL) - в поле WebBrowser выводятся новые страницы, список СomboBox заполняется именами файлов. Наблюдать содержимое поля StatusBar,
  • использовать кнопки Command3 (HOME), Command4 (FORWARD), Command5 (BACK) - в поле WebBrowser выводятся ранее использованные страницы (рис. 7.1).
  • ' описание переменной, предназначенной для хранения 
    ' стартового URL
    Private start As String
    
    ' инициализация переменной, хранящей стартовый URL и
    ' передача параметра процедуре навигации 
    ' Web Browser1.Navigate start
    Private Sub Form_Load() 
    ErhaltAdr
    makeNavig start
    End Sub
    
    ' присвоить переменной значение - имя файла
    Private Sub ErhaltAdr()
    start = "file://A:\Running Birthday.htm"
    End Sub
    
    ' навигация браузера. В результате навигации 
    ' устанавливается соединение с соответствующим узлом 
    ' и начинается загрузка файла, указанного в URL
    Private Sub makeNavig(Adr As String) 
    WebBrowser1.Navigate Adr
    End Sub
    
    ' командной кнопкой можно остановить передачу и 
    ' загрузку файла
    Private Sub WebBrowser1_DownloadBegin() 
    Command2.Enabled = True
    End Sub
    
    Private Sub Command2_Click() 
    WebBrowser1.Stop
    End Sub
    
    ' заканчивается загрузка файла, указанного в URL, 
    ' останавливать нечего
    Private Sub WebBrowser1_DownloadComplete() 
    Command2.Enabled = False
    ' указать имя файла (URL) в статусной строке
    StatusBar1.SimpleText = WebBrowser1.LocationName 
    StatusBar1.SimpleText = "LOAD FROM: "  WebBrowser1.LocationName
    With ComboBox1
    ' включить в список ComboBox имя файла 
    ' текущего URL и исключить 5-й элемент списка,
    ' если список полон
    .AddItem WebBrowser1.LocationName
    ' .ListIndex = 0
    If .ListCount > 5 Then
    .RemoveItem 5
    End If
    End With
    End Sub
    
    ' перемещения к ранее использованным страницам
    Private Sub Command5_Click() 
    WebBrowser1.GoBack
    End Sub
    
    Private Sub Command4_Click()
    WebBrowser1.GoForward
    End Sub
    
    Private Sub Command3_Click()
    makeNavig start
    End Sub
    
    ' после ввода пути и имени файла в поле ComboBox (здесь 
    ' используется тип доступа "file:\\путь :") сделать щелчок
    ' на кнопке для реализации навигации
    Private Sub Command1_Click() 
    makeNavig ComboBox1.Text
    End Sub
    (рис 7.1) Browser

    Windows API - набор DLL (библиотек динамической компоновки) с сотнями функций

    API - это интерфейс прикладного программирования. DLL - это составная часть Windows и представляет собой откомпилированный код. При работе функции, объединeнные в файле, связываются с программмой; программа использует их во время выполнения . Win32 (версия API) состоит из 32-разрядных функций. Для обеспечения совместимости с предыдущими версиями сохранeн (ранний) 16-разрядный код API.

    Перед тем, как воспользоваться функцией DLL, еe нужно объявить (объявление процедуры и типов еe параметров).

    API Viewer

    Программа API Viewer, рис. 7.2, входящая в комплект Visual Basic, содержит информацию о большинстве функций, типов данных и констант. Там содержатся готовые фрагменты, которые можно включить в приложение.

    API Viewer можно вызвать следующим образом: меню Пуск $$\to$$ Программы $$\to$$ Microsoft Visual Basic $$\to$$ Microsoft Visual Basic Tools $$\to$$ API Text Viewer. API Viewer можно добавить в меню Добавления (подключить к IDE Visual Basic): меню Добавления $$\to$$ Менеджер Дополнений $$\to$$ VB API Viewer (список Доступные дополнния) $$\to$$ в нижнем правом углу окна окна Добавления пометить флажок Загрузка при запуске $$\to$$ ОК $$\to$$ закрыть Visual Basic, затем стартовать его ещe раз $$\to$$ в меню Добавления появился API Viewer $$\to$$ сделaть щелчок на его имени $$\to$$ выводится окно API Viewer, рис. 7.2. API Viewer нужно сконфигурирвать: File $$\to$$ Load text File $$\to$$ Win32API.txt $$\to$$ File $$\to$$ Convert to Database $$\to$$ сохранить под предложенным именем базу данных $$\to$$ использовать это окно для поиска объявлений (см. рис. 7.3) необходимой функции.

    (рис 7.2) API Viewer

    API Viewer предоставляет следующие возможности:

  • выбор вида объявления - константа, функция, или тип данных (поле API Type),
  • после ввода имени искомого элемента отображается выбранная группа; список можно пролистать (поля Type the first few letters : и Available Items),
  • выбор типа объявления - Private, Public, (окно Declare Scope),
  • добавление/удаление объявления выбранного элемента в список Selected Items; можно также очистить этот список (кнопки Add, Remove, Clear),
  • скопировать объявления из списка Selected Items в буфер обмена (кнопка Copy).
  • Объявление функций

    В окне API Viewer, рис. 7.2 из списка API Type (верхняя часть окна) следует выбрать Declares. Далее нужно ввести в поле Type the first few letters : имя функции (например) CopyFile, после щелчка на еe имени в поле Available Items и на кнопке Add в нижнее поле окна выводится еe объявление. Далее следует выбрать выбрать тип (Public, Private), скопировать объявление в буфер обмена (кнопка Copy). Впоследствии нужно вставить объявление функции в область (General) (Declarations) проекта. При использовании в проекте модуля следует использовать тип объявления Public и поместить объявление функции в область модуля.

    В данном случае (рассматривается функция CopyFile) объявление имеет вид:

    Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA"_
    (ByVal lpExistingFileName As String, ByVal lpNewFileName _
    As String, ByVal bFailIfExists As Long) As Long
  • Declare - обозначение объявления внешней процедуры,
  • Function - тип процедуры,
  • CopyFile - имя функции: копирование файла,
  • Lib - используется для указания DLL, содержащей функцию,
  • "kernel32" - имя DLL,
  • Alias "CopyFileA" API - ключевое слово Alias указывает имя функции, обеспечивающее совместимость 16-разрядной и 32-разрядной версий API,
  • ByVal - способ передачи параметра - "по значению",
  • LpExistingFileName, lpNewFileName, bFailIfExists - список параметров,
  • As String, As Long - типы (данных) параметров,
  • As Long - тип значения, возвращаемого функцией.
  • Возвращаемое значение (здесь) RetVal принимает значение 0, если копирование файла не произошло.

    Практическая работа 48. Использование Windows АPI

    Использовать функцию Windows АPI копирование файла; для этого выполнить следующее:

  • Создать на форме (рис. 7.3):
  • элементы управления DriveListBox, DirListBox, FileListBox; синхронизировать их работу, обеспечить вывод содержимого каталога после его маркировки и нажатия клавиши Enter,
  • две командные кнопки, четыре поля метки, см. код процедур,
  • ввести код, данный ниже, пояснения даны под комментариями,
  • стартовать проект, выбрать для копирования файл в дереве файлов, выведенном в поля элементов DriveListBox, DirListBox, FileListBox (здесь - файл Net14.ICO на дискете), маркировать файл. Сделать щелчок на кнопках Command2 и (последровательно несколько раз) на Command1 (Function:) - в поля меток выводятся: имя дискового устройства, имя каталога, путь и имя файла, сообщение о числе копирований файла, рис. 7.3
  • ' объявление функции
    Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA"_
    (ByVal lpExistingFileName As String, ByVal lpNewFileName _
    As String, ByVal bFailIfExists As Long) As Long 
    ' описание переменной для хранения возвращаемого функцией значения
    Dim RetVal As Long 
    
    Private Sub Command1_Click() ' процедура копирования файла
    ' переменная описана как Static для обеспечения 
    ' многократного копирования файла последовательным
    ' нажатием командной кнопки
    Static i As Integer 
    RetVal = CopyFile(File1, "lpNewFileName", 1) ' копирование
    Print File1 ' вывод имени копируемого файла на форме
    ' вывод имени файла и числа копирований
    Label1 = File1  " Copy "  i + 1 
    i = i + 1
    End Sub
    
    ' синхронизация работы элементов управления Dir1 и Drive1; 
    ' обеспечение вывода содержимого каталога при его 
    ' маркировке и нажатии клавиши Enter
    Private Sub Drive1_Change() 
    Dir1.Path = Drive1.Drive
    End Sub
    
    Private Sub Dir1_Change()
    File1.Path = Dir1.Path
    End Sub
    
    Private Sub Dir1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then Dir1.Path = Dir1.List(Dir1.ListIndex)
    End Sub
    
    ' вывод в поля меток имени дискового устройства, каталога, 
    ' пути и имени файла
    Private Sub Command2_Click() 
    Label2 = Drive1: Label3 = Dir1: Label4 = File1
    End Sub
    (рис 7.3) Пример использования Windows API
    Вернуться к учебному плану