Опубликован: 04.07.2006 | Уровень: для всех | Доступ: свободно
Лекция 7:

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

< Лекция 6 || Лекция 7: 123 || Лекция 8 >

Объявление функций

В окне 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 копирование файла; для этого выполнить следующее:

  1. Создать на форме (рис. 7.3):
    • элементы управления DriveListBox, DirListBox, FileListBox; синхронизировать их работу, обеспечить вывод содержимого каталога после его маркировки и нажатия клавиши Enter,
    • две командные кнопки, четыре поля метки, см. код процедур,
  2. ввести код, данный ниже, пояснения даны под комментариями,
  3. стартовать проект, выбрать для копирования файл в дереве файлов, выведенном в поля элементов 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
Пример использования Windows API

Рис. 7.3. Пример использования Windows API
< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Константин Новков
Константин Новков

Лекция 3: 2

Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox).

Не могу найти меню Разработать (Develop)>Links и т.д.

антонина квасова
антонина квасова