18. API

E-mail Печать PDF
Рейтинг пользователей: / 0
ХудшийЛучший 

Использование функций Windows API

API

 
 

Windows API, или Application Programming Interface (интерфейс прикладного программирования) - это набор низкоуровневых функций, которые предоставляет программисту ОС Windows. Эти функции предоставляют основные возможности по работе с файловым вводом-выводом, графикой, клавиатурой и мышью, звуком. Иначе говоря, эти функции могут вызываться для выполнения задач, для которых недостаточно стандартного программного кода Visual Basic. Например, стандартные функции Visual Basic не позволяют перезагрузить компьютер, но перезагрузку можно выполнить, обратившись к соответствующей функции Windows API.

С точки зрения программиста, API функции аналогичны обычным функциям. Они имеют набор входных и выходных параметров, иногда возвращают в вызвавшую их программу некоторое значение. Эти функции уже скомпилированы в отдельную dll библиотеку.

Прежде чем обратиться к некоторой функции, входящей в состав WinAPI, ее необходимо объявить в любом модуле проекта при помощи инструкции Declare:

Declare Function ИмяФункции Lib «Библиотека» Alias «ИмяФ-ии» (Арг-ты) As Тип

или

Declare Sub ИмяФункции Lib «Библиотека» Alias «ИмяФункции» (Аргументы)

Псевдоним определяет «действительное» имя API функции, т.е. имя, определенное в dll. Псевдонимы используются в том случае, если в библиотеке указано недопустимое для Visual Basic имя функции. При попытке вызова функции управление будет передано в функцию с именем указанным в псевдониме, определенную в указанной библиотеке.

Пример объявления и использования:

Public Class Form1

Inherits System.Windows.Forms.Form

  ' Объявление API-функции.

  Public Declare Function MyMsgBox Lib "user32.dll" Alias "MessageBoxA" _

  (ByVal hWnd As Integer, ByVal strMessage As String, _

   ByVal strCaption As String, ByVal uiType As Integer) As Integer

    ...

  Private Sub Button1_Click(ByVal sender As System.Object, _

  ByVal e As System.EventArgs) Handles Button1.Click

      ' Вызов API-функции.

       MyMsgBox(0, "Hello!", "Caption", 0)

    End Sub

End Class

Проблемы использования API функций могут возникнуть из-за несоответствия используемых типов. Примеры перевода типов:

Visual C++

Visual Basic. NET

int

Integer

HWND

Integer

LPCSTR

String

UINT

Integer

 

Если в функции необходим описатель окна hwnd, необходимо обратиться к свойству Handle класса Control. Тип свойства Handle.

Описание Windows API функций, а также констант и пользовательских типов можно найти в файле Win32api.txt. Можно просто скопировать из этого файла строку, начинающуюся с оператора Declare.

После объявления функции, возможно, будет необходимо подключить классы, используемые в функции и описать константы. Эти описания также можно скопировать из файла Win32api.txt. Для вызова функции из кода программы необходимо обратиться к ней по имени, передать необходимые параметры и, возможно, присвоить результат выполнения какой-либо переменной.

 

Примеры некоторых функций:

SndPlaySound - позволяет проигрывать звуковые файлы в формате WAV

SystemparametersInfo - используется для настройки рабочего стола Windows.

ExitWindowEx - позволяет завершить работу Windows.

GetFreeDiskSpace - получить объем свободного места на диске.

CreateProcess - позволяет запустить приложение

WaitForSingleObject - ожидание каких-либо действий, или состояния объекта

GetFileTime - получить дату создания, доступа и последней модификации файла

GetFileSize - получить объем файла

GetFileAttributes - получить атрибуты файла

GetSystemTime - позволяет получить системные значения даты/времени

ReadFile - чтение файла

Shell - позволяет запустить из одной программы другую и передать управление в вызвавшую программу, не дожидаясь того, когда будет выполнена запущенная задача.

ExecCmd - позволяет запустить из одной программы, дождаться завершения запущенной задачи и вернуть управление вызвавшей программе.

 

 

Добавьтe Ваш комментарий

Ваше имя (псевдоним):
Ваш адрес почты:
Заголовок:
Комментарий:

Комментарии

Интересное




Похожие материалы

Партнёры