Що b> b> таке b> API? b> p>
API - це скорочення від Application
Programming Interface. Загалом кожна програма, операційна система і
т.д. має свій API. Windows - API складається з цілого ряду функцій, які
дозволяють Вам використовувати системні Windows-конструкції. Всі
Windows-API-функції були написані в C + +, але ваші програми зможуть спокійно їх
використовувати з Visual Basic'a. API-функції повинні бути обов'язково
продекларовано! Декларація API-функцій має наступний синтаксис: p>
[Public | Private] Declare Function
name Lib "libname" [Alias "aliasname"] [([arglist])] [As
type] p>
Ключове
слово Lib вказує, в якій бібліотеці Visual Basic може знайти потрібну
функцію. Маються на увазі бібліотеки динамічних зв'язків (*. dll). Але в aliasname
вказувати розширення не треба. Alias вказує під яким ім'ям програма повинна
шукати завдання функцій в бібліотеці. Arglist - це передача даних
параметри.Windows-API дозволяє дві речі: проведення певних завдань і
доступ до системних ресурсів. Список різних API-функцій та їх декларацій Ви
можете проглянути за допомогою стандартної програми API-Viewer. p>
Примітка:
Якщо АPI-функція чекає від вас змінної, Ви повинні обов'язково оголосити її і
заповнити пробілами. Тобто мінлива повинна бути певної користувачем.
Це риси мови С + +, на якому і був написаний Windows-API. p>
Розглянемо
кілька прикладів: p>
Припустимо,
ваше застосування повинне визначати каталог, в якому встановлена операційна
система Windows 95/98/NT. Зробити це простіше за все, використавши API-функцію
GetWindowsDirectory. p>
1.
У модулі декларуємо API-функцію GetWindowsDirectory: p>
Declare Function GetWindowsDirectory
Lib "kernel32" Alias _ p>
"GetWindowsDirectoryA"
(ByVal lpBuffer As String, ByVal _ p>
nSize
As Long) As Long p>
2.
У модулі оголошуємо змінну, припустимо, WinDir, якою має бути присвоєно
ім'я директорії. p>
Public
WinDir As String p>
3.
У підпрограму вписуємо: p>
змінну,
яку треба передати API, ми вже оголосили
і тепер заповнюємо пробілами. p>
Прогалин
має бути приблизно стільки, скільки
приблизно символів повинна мати змінна. p>
В
цьому випадку вистачить і 20, тому що Windows зазвичай встановлюють в С: Windows або C: Win95, і т.д. Тобто сума
символів, швидше за все не перевищить 20 p>
WinDir = Space (20) p>
Debug.Print Left (WinDir,
GetWindowsDirectory (WinDir, 20)) p>
Оскільки
API є функцією, то вона повинна повертати якесь значення. У цьому випадку функція
GetWindowsDirectory возврашает довжину
шуканого значення. Тобто якщо, наприклад, шукане значення це
C: WINDOWS, функція поверне значення 10. p>
'Змінна
ж маєте довжину 20. Ці 10 символів записуються першими, а далі йдуть 10 пробілів. Навіщо нам,
питається, зайві 10 символів? Адже
це використовується непотрібна пам'ять ... p>
Тому
інструкцією Left ми із змінної WinDir витягуємо рівно стільки перших символів, скільки взагалі
потрібних ... p>
Другий
приклад: p>
Наприклад,
ваша програма повинна визначити, який із ваших носіїв є CD-ROM або
віддалений і т.д. "Рідний" інструментарій Visual Basica зробити цього
не дозволяє - доводиться вдаватися до допомоги API-функції. p>
1.
У модулі декларуємо API-функцію GetDriveType: p>
Declare Function GetDriveType Lib
"kernel32" Alias _ p>
"GetDriveTypeA" (ByVal
nDrive As String) As Long p>
Під
параметром nDrive подрзумевается, буква латинського алфавіту плюс двоетечіе, тобто потенційне
ім'я дисковода, наприклад C: p>
2.
У підпрограму вписуємо: p>
тут
цикл For ... Next "підсовує" функції GetDriveType всі букви латинського алфавіту по черзі. Функція Chr
перетворює значення таблиці ASCII
(від 0 до 255) в літери. Так ось 65 це буква A, a 90 це Z p>
Dim myDrive As Integer p>
For myDrive = 65 To 90 p>
Debug.Print Chr (myDrive) &
":" & "-" & GetDriveType (Chr (myDrive) &
":") P>
Next
p>
Ось що поверне функція GetDriveType нам,
наприклад в мене: p>
A:
- 2 p>
C:
- 3 p>
D:
- 3 p>
E:
- 5 p>
Всі
інші літери позначені цифрою 1. Так, що б зрозуміти ці позначення потрібно
знати наступну таблицю: p>
Назва
константи: Значення: p>
DRIVE_UNKNOWN p>
0 p>
DRIVE_NO_ROOT_DIR p>
1 p>
DRIVE_REMOVEABLE p>
2 p>
DRIVE_FIXED p>
3 p>
DRIVE_REMOTE p>
4 p>
DRIVE_CDROM p>
5 p>
DRIVE_RAMDISK p>
6 p>
Підпрограма
Main в модулі є як Form_Load на формі, тобто вважається головною і
завантажується за замовчуванням. p>
Про
призначення багатьох API функцій можна легко здогадатися за їх назвою.
Наприклад, GetWindowsDirectory (отримати директорію Windows) або GetDriveType
(отримати тип носія). p>
Список літератури h2>
Для
підготовки даної роботи були використані матеріали з сайту http://visualprogs.narod.ru/
p>