Windows API: настоящая эффективность
Как бы ни были хороши встроенные функции VBA, все же существует предел их возможностей, поскольку они не в состоянии обеспечить выполнение многих операций, необходимых для организации приложений. Например, они не позволяют определить объем свободной памяти на жестком диске или изменить метку тома диска. В этих и многихдругих случаях приходится обращаться за помощью к функциям API. В этом разделе рассмотрены лишь некоторые из многочисленных функций Windows API для работы с файлами и дисками.
Сравнение функции API с функциями VBA
Давайте для начала сравним уже известные вам функции VBA с их эквивалентами в Windows API. Вы заметите у них много общего. Это и неудивительно, ведь в конце концов при вызове VBA-функции VBA вызывает соответствующую функцию Windows API.
В табл. 12.4 приведен список функций VBA для работы с дисками и файлами в сравнении с аналогичными функциями Windows API. Если возможности функций Windows API чем-то отличаются от возможностей функций VBA, это отмечается в третьем столбце таблицы. Поскольку интерфейс вызова функций Windows API сло-жснее по сравнению с вызовом функций VBA, то при отсутствии существенных преимуществ в их использовании мы не сочли нужным говорить о них.
Таблица 12.4. Сравнение функций Windows API ч VBA для работы с файлами и дисками
Функиня плп оператор УВД |
Эквивалентные функции API |
Отлпчпе Функипп API |
|||
ChDir,ChDrive |
SetCurrentDirector у |
Нет дополнительных функциональных возможностей |
|||
CurDir |
GetCurrent Directory |
Нет дополнительных функциональных возможностей |
|||
Dir |
FindFirstFile, FindNextFile, FindClose |
Требуется больше вызовов функций, но и предоставляется больше информации о каждом файле |
|||
FileCopy |
CopyFile |
Позволяет избежать перезаписи существующего файла |
|||
FileDateTime |
GetFileTime |
Гораздо сложнее, но предоставляет информацию о времени всех событий, связанных с файлом (создания, последнего открытия и последней модификации) |
|||
FileLen |
GetFileSize |
Работает с огромными файлами (более 2 Гб) |
|||
GetAttr |
GetFileAttributes |
Нет дополнительных функциональных возможностей |
|||
Kill |
DeleteFile |
Нет дополнительных функциональных возможностей |
|||
MkDir,RmDir |
Create Directory, |
Поддержка атрибута защиты NT |
|||
CreateDirectoryEx, |
|||||
Remove Directory |
|||||
Name |
MovteFile |
Нет дополнительных функциональных позмож- |
|||
носте и |
|||||
SetAttr |
SetFileAttributes |
Нет дополнительных функциональных возмож |
|||
ностей |
|||||
Open, Input, |
CreateFile, ReadFile, |
Все равно, что сравнивать яблоки с апельсина |
|||
Print, Write, |
WriteFile, CloseHandle |
ми (функцию API CreateFile необходимо ис |
|||
Close |
пользовать для получения дескрипторов фай |
||||
лов, но в общем применять функции VBA для |
|||||
операций ввода-вывода файлов гораздо проще) |
|||||
Помимо этого, API включает множество других функций, не имеющих аналогов в VBA. В табл. 12.5 приведен список тех из них, которые упоминаются в настоящей главе. Существуют и другие, однако они большей частью слишком экзотичны или слишком сложны, чтобы их стоило здесь рассматривать.
Таблица 12.5. Функции Windows API, lie имеющие аналогов в VBA
функция Описание
CompareFileTime Сравнивает значения времени двух файлов
FindFirstChangeNotification, Сообшает Windows о необходимости унсдомлять ваше приложение, об
FindNextChangeNotification изменениях файла или каталога
FindCloseChangeNotification
GetBinaryType Выясняет, является ли файл исполняемым, и если является, то определяет его тип
GetDiskFreeSpace Предоставляетинформациюодиске, втом числе объем свободного дискового пространства
GetDriveType Определяет тип диска (фиксированный, сменный, сетевой, компакт-диск или RAM-диск)
GetFileInformationByHandle Предоставляет подробную информацию о файле при единственном вызове функции
GetFullPathName Определяет полный путь доступа к файлу по указанному относительному пути
GetLogicalDrives, Определяют имена логических дисков компью- тера в виде битовой маски
GetLogicalDriveStrings либо в виде строки, разделенной нулевыми символами
GetShortPathName Определяет короткое (8.3) имя файла по указанному длинному имени файла
GetTempFileName Определяет имя временного файла по имени каталога, символам префикса и необязательному уникальному целому числу
GetTempPath Находит каталог, предназначенный для хранения временных файлов
GetVolumeInforraationПредоставляет информацию о файловой системе и заданном томе
SearchPath Ищет файл по заданному пути или по системным путям, установленным по умолчанию
SetFileTimeИзменяет значения времени для заданного
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.