Лекция 3: 2 Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox). Не могу найти меню Разработать (Develop)>Links и т.д. |
Кратко о приложениях для сетей. Windows API
Объявление функций
В окне 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