API - это сокращение от Application Programming Interface. В общем каждая программа, операционная система и т.д. имеет свой API. Windows - API состоит из целого ряда функций, которые позволяют Вам использовать системные Windows-конструкции. Все Windows-API-функции были написаны в C++, но ваши программы смогут спокойно их использовать из Visual Basic'a. API-функции должны быть обязательно продекларированы! Декларация API-функций имеет следующий синтаксис:
[Public | Private] Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] [As type]
Ключевое слово Lib указывает, в какой библиотеке Visual Basic может найти нужную функцию. Имеются в виду библиотеки динамических связей (*.dll). Но в aliasname указывать расширение не надо. Alias указывает под каким именем программа должна искать заданую функцию в библиотеке. Arglist - это передаваемые параметры.Windows-API позволяет две вещи: проведение определённых заданий и доступ к системным ресурсам. Список различных API-функций и их деклараций Вы можете просмотреть при помощи стандартной программы API-Viewer.
Примечание: Если АPI-функция ждёт от вас переменной, Вы должны обязательно объявить её и заполнить пробелами. Т.е. переменная должна быть определённой пользователем. Это черты языка С++, на котором и был написан Windows-API.
Рассмотрим пару примеров:
Возможно вы искали - Реферат: Массивы
Допустим, ваше приложение должно определять каталог, в котором установлена операционная система Windows 95/98/NT. Сделать это проще всего, использовав API-функцию GetWindowsDirectory.
1. В модуле декларируем API-функцию GetWindowsDirectory:
Declare Function GetWindowsDirectory Lib "kernel32" Alias _
"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal _
nSize As Long) As Long
Похожий материал - Реферат: Переменные
2. В модуле объявляем переменную, допустим, WinDir, которой должно быть присвоено имя директории.
Public WinDir As String
3. В подпрограмму вписываем:
Переменную, которую надо передать API, мы уже объявили и теперь заполняем пробелами.
Пробелов должно быть примерно столько, сколько примерно символов должна иметь переменная.
Очень интересно - Реферат: Работа с текстовыми файлами в Visual Basic
В этом случае хватит и 20, т.к. Windows обычно устанавливают в С:\Windows или C:\Win95, и т.д. Т.е. сумма символов, скорее всего не превысит 20
WinDir = Space(20)
Debug.Print Left(WinDir, GetWindowsDirectory(WinDir, 20))
Т.к. API является функцией, то она должна возвращать какое-то значение. В данном случае функция GetWindowsDirectory возврашает длину искомого значения. Т.е. если, например, искомое значение это C:\WINDOWS, то функция вернёт значение 10.
'Переменная же имеете длину 20. Эти 10 символов записываются первыми, а дальше идут 10 пробелов. Зачем нам, спрашивается, лишние 10 символов? Ведь это используется ненужная память...
Вам будет интересно - Реферат: О пользе циклов
Поэтому инструкцией Left мы из переменной WinDir вытаскиваем ровно столько первых символов, сколько вообще нужных...
Второй пример:
Например, ваша программа должна определить какой из ваших носителей есть CD-ROM или удалённый и т.д. "Родной" инструментарий Visual Basica сделать этого не позволяет - приходится прибегать к помощи API-функции .
1. В модуле декларируем API-функцию GetDriveType:
Declare Function GetDriveType Lib "kernel32" Alias _
Похожий материал - Реферат: Замер степени использования процессора
"GetDriveTypeA" (ByVal nDrive As String) As Long
Под параметром nDrive подрзумевается, буква латинского алфавита плюс двоетечие, т.е. потенциальное имя дисковода, например C:
2. В подпрограмму вписываем:
здесь цикл For...Next "подсовывает" функции GetDriveType все буквы латинского алфавита по очереди. Функция Chr преобразовывает значения таблицы ASCII (от 0 до 255) в буквы. Так вот 65 это буква A, a 90 это Z