Основы API. Создание собственного API

19.09.2019 Приложения

Пришло время поговорить о таком понятии как API функции в языке Visual Basic . Чем же важны эти функции в Visual Basic? Давайте разберемся, во-первых, когда Вы начнете программировать на Visual Basic, Вы сразу же поймете, что с использованием этих функций можно написать очень серьезные программы, во-вторых, просто многое нельзя сделать без использования API функций, например, практически все что связанно с использованием операционной системы Windows (например: узнать имя пользователя, место на жестком диске и так далее ).

Но для того чтобы начать применять на практике эти функции, Вам нужно знать, что они из себя представляют, давайте поговорим сначала об этом.

Теория по API функциям Visual Basic

API – это аббревиатура Application Programming Interface (интерфейс прикладного программирования ). Другими словами, API – это набор функций, которые сама операционная система дает программисту для использования их в своих программах. С помощью API программисты легко реализуют свои задумки на практике.

API функции могут вызываться из Visual Basic для выполнения задач, для которых недостаточно стандартного программного кода Visual Basic. Например, стандартные средства Visual Basic не позволяют выключить компьютер или перезагрузить его. Однако все это можно легко сделать через обращение к соответствующей функции API.

Практически все функции, которые располагаются в Windows - находятся внутри DLL (Dynamic Link Library ). Все dll-файлы расположены в системной папке Windows. Существует свыше 1000 функций API, которые условно делятся на четыре основные категории.

  • Работа с приложениями - запуск и закрытие приложений, обработка команд меню, перемещения и изменения размера окон;
  • Графика - создание изображений;
  • Системная информация - определение текущего диска, объем памяти, имя текущего пользователя и т.д.;
  • Работа с реестром - манипуляции с реестром Windows.

Применение API функций на практике

Теперь перейдем непосредственно к использованию этих функций на практике. Функции API, вызываемые в Visual Basic, должны быть сначала объявлены. При объявлении указывается имя DLL и функции, а также информация о количестве и типе аргументов.

Процедуры DLL объявляются командой Declare в секции General Declarations модуля формы или стандартного модуля:

Declare Function имя Lib "библиотека" [([ _ переменная [,ByVal,] переменная ]...])] As тип

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

Секция Lib сообщает, где следует искать файл DLL, содержащий функцию. При ссылке на основные библиотеки Windows (user32.dll, kernel32.dll, gdi.dll) расширение включать не обязательно.

Если путь к файлу не указан, то начинается просмотр каталогов в следующей последовательности

  1. Каталог, содержащий EXE-файл программы;
  2. Текущий каталог;
  3. Системный каталог Windows;
  4. Каталог Windows;
  5. Переменная окружения Path.

Вот небольшой перечень стандартных библиотек DLL Windows:

  • advapi.dll - защита NT,реестр и другие продвинутые сервисы;
  • comdlg.dll - стандартные диалоговые окна;
  • gdi.dll - интерфейс графических устройств;
  • kernel32.dll - память, диски, процессы, ресурсы;
  • mpr.dll - сети;
  • netapi32.dll - библиотека сетевого API;
  • shell32.dll - оболочка Windows, drag-and-drop ,выборка значков;
  • user32.dll - пользовательский интерфейс-окна, меню, строки, сообщения;
  • version.dll - контроль версий;
  • winmm.dll - мультимедиа, звук, джойстики, таймеры;
  • winspoll.dll - диспетчер печати.

Большинство процедур DLL за документировано с использованием нотации языка программирования C и C++. Для успешного преобразования функции API в команду Declare необходимо разбираться в механизме передачи аргументов. Обычно аргументы передаются по значению. В этом случае перед именем аргумента ставится ключевое слово ByVal. Если аргумент передается по ссылке, то ставится ByRef.

Вот самый малый список функций, которые используются в Visual Basic:

  • BitBlt - копирует изображение из одного hDC в другой;
  • FindWindow - находит Handle окна с указанным Caption;
  • GetCursorPos - возвращает текущую позицию курсора мыши (глобально);
  • GetDriveType - возвращает тип накопителя;
  • GetForegroundWindow - возвращает Handle активного окна;
  • SetCursorPos - устанавливает новую позицию курсора мыши;
  • SetVolumeLabel - изменяет метку диска;
  • SetWindowPos - устанавливает позицию окна с определённым Handle (также с помощью этой функции можно сделать так, чтобы окно было ПОВЕРХ всех;
  • ShellExecute - запускает приложение, ассоциированное с расширением, которое имеет указанный файл (также может просто запустить указанное приложение);
  • ShowCursor - скрывает или показывает курсор мыши на экране.

Примеры работы с реестром

Также при программировании на Visual Basic, да и на других языках возникает проблема, когда нужно использовать реестр Windows, но с помощью api функций это сделать легко, например:

Для чтения строкового параметра используйте функцию GetRegString

Пример:

Dim test As String test = GetRegString(HKEY_LOCAL_MACHINE, _ "Software\Microsoft\DirectX", "Version") Form1.Caption = test

Для чтения параметра DWORD GetRegDWord

Пример:

Dim test As Long test = GetRegDWord(HKEY_LOCAL_MACHINE, _ "Software\Microsoft\Internet Explorer\AboutURLs", "Home") Form1.Caption = test

Для записи строкового параметра используется SetRegString

Пример:

SetRegString HKEY_LOCAL_MACHINE, _ "Software\test", "MyProgram", "Options"

Если ключ или параметр не были созданы, то они будут созданы, если ключ или параметр уже существуют, то новые значения запишутся поверх старых.

Для записи параметра типа DWORD используется SetRegDWord

Пример:

SetRegDWord HKEY_LOCAL_MACHINE, _ "Software\test", "MyProgram", "555"

Для удаления ключа из реестра используется функция DeleteRegKey

Пример:

DeleteRegKey HKEY_LOCAL_MACHINE, "Software", "test", True

Второй параметр - Ключ-родитель
Третий параметр - True - если требуется подтверждение на удаление или False - если подтверждение не требуется.

Для удаления параметра из реестра используется функция DeleteRegValue

Пример:

DeleteRegValue HKEY_LOCAL_MACHINE,_ "Software\Microsoft\Internet Explorer\AboutURLs", "mozilla", False

На самом деле возможности API функций в операционной системе Windows практически безграничны. Давайте закончим на этом рассмотрение этой возможности Visual Basic и напоследок напишем небольшую программку с использованием API функций.

Данная программа просто выводит сообщение на экран, вставьте следующий код:

Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long Private Sub Form_Load() Const TEXT = "Ты использовал API" Dim hRgn As Long Font.Name = "Times New Roman" Font.Bold = True Font.Size = 60 Width = TextWidth(TEXT) Height = TextHeight(TEXT) BeginPath hdc Print TEXT EndPath hdc hRgn = PathToRegion(hdc) SetWindowRgn hWnd, hRgn, False Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2 End Sub

Мы здесь использовали 4 функции (BeginPath, EndPath, PathToRegion, SetWindowRgn), которые располагаются в двух dll библиотеках (gdi32, user32).

На этом все, пока!

Рано или поздно любой программист сталкивается с таким понятием как API . Однако, когда такая встреча происходит, не все знают, что это такое, зачем оно нужно и как его использовать. И в этой статье я собираюсь восполнить этот пробел в знаниях некоторых из Вас, а также приведу пример из своей практики.

API (application programming interface ) - это интерфейс прикладного программирования . Если говорить более простым языком, то это набор различных функций, констант, классов, форматов запросов, которые можно использовать в других программах.

Можно считать, что API - это некий объект, реализацию которого мы не знаем, однако, можем его использовать. Например, компьютер - объект, реализацию которого знают очень мало людей, однако, использовать его могут почти все, совершая какие-то действия: просмотр видео, сёрфинг по Интернету, печать текста и прочее. Как это всё работает - мало, кто знает, а вот делать это могут чуть ли не все.

Примером API является Windows API , OpenGL API , Direct3D API и так далее.

Например, не так давно я тоже столкнулся напрямую с API . Я зарегистрировался на сервисе почтовых рассылок "SmartResponder.ru " и завёл рассылку, на которую стали подписываться люди. Задача была следующая: в течение суток после подписки человек может приобрести со скидкой мой платный видеокурс. Так как вся информация о подписчиках хранится на сервере "SmartResponder.ru ", то обычный доступ (например, через БД ) к этим данным я не имел, а реализовывать это было нужно. Благо, у "SmartResponder.ru " есть свой собственный API , которым я и воспользовался.

Я нашёл в их API формат запроса, чтобы в результате вытащить дату подписки. Далее через cURL я отправил соответствующий запрос и получил искомую дату подписки для конкретного e-mail адреса . Далее стандартная обработка и вывод результата.

По определению из википедии, API - набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений.

Но так как многое в википедии не доступно для понимания многими людьми, я постараюсь объяснить на пальцах что такое API и для чего их обычно делают, и как используют.

API бывают совершенно разные, но для примера я выбрал ситуацию, когда у нас есть сеть магазинов и всего одна общая база данных. Представьте, что вы владеете партнеркой. Партнерка работает по следующему принцыпу: человек регистрируется в партнерской программе и получает движок магазина. Дальше он может поставить этот магазин у себя на хостинге и начать работать. Но все данные на этом магазине берутся из нашей базы, то есть нам надо давать каждому партнеру доступ к нашей драгоценной базе данных. Представляете насколько это опасно? Ведь нам необходимо открыть доступ к базе из вне, что бы все магазины партнеров могли работать с ней. А что будет если данные доступа попадут в руки к злоумышленникам?

Вот тут нам и поможет API. Вместо того, что бы давать доступ к базе, мы просто сделаем API, через который магазины партнеров будут получать информацию. Таким образом с базой данных будет работать только наш скрипт API, а магазины будут работать уже с этим скриптом.

Как это работает?
Например магазин посылает запрос на наше API
http://ourapi.com/get_books?limit=20
и наше API понимает, что ему надо отдать список книг, состоящий из 20 экземпляров, ведь мы передали параметр limit равный 20. Наш скрипт(API) делает запрос к базе, получает список книг и возвращает их магазину(по сути, просто выводит на экран) в определенном формате. Формат, в котором API возвращает информацию может быть совершенно любым, главное что бы его понимали наши магазины. Это может быть JSON, сериализованный массив или XML. Это уже не важно, главное что бы вы поняли принцип.

Набор команд, которые понимает API вы определяете сами. Например в нашем случае это могли бы быть такие команды, как получение списка книг, получение списка категорий, получение популярных книг, получение новых книг и т.д. Таким образом, даже если злоумышленник получит возможность обращаться к нашему API, все что он сможет сделать это получить список книг, а это не ставит перед нашей базой данных никаких угроз.

Надеюсь мне удалось объяснить что такое API на простом примере. Если остались вопросы, задавайте их в комментах или на форуме и мы с радостью вам поможем в их решении.

В ероятно, вы видели термин «API». Операционная система, веб-браузер и обновления приложений часто объявляют о новых API для разработчиков. Но что такое API?

Интерфейс прикладного программирования

Термин API является аббревиатурой, и он означает «Интерфейс прикладного программирования».

API — это как меню в ресторане. В меню представлен список блюд, которые Вы можете заказать, а также описание каждого блюда. Когда Вы укажете, какие пункты меню Вы хотите, кухня ресторана выполняет эту работу и предоставляет Вам готовые блюда. Вы точно не знаете, как ресторан готовит эту еду, и Вам это не нужно.

Аналогично, API предоставляет множество операций, которые могут использовать разработчики, а также описание того, что они делают. Разработчику необязательно знать, как, например, создается операционная система и отображается диалоговое окно «Сохранить как». Им просто нужно знать, что он доступен для использования в приложении.

Это не идеальная метафора, поскольку разработчикам, возможно, придется предоставить свои собственные данные API для получения результатов, поэтому, возможно, это больше похоже на причудливый ресторан, где Вы можете предоставить некоторые из Ваших собственных ингредиентов, с которыми будет работать кухня.

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

API упрощают жизнь для разработчиков

Предположим, Вы хотите разработать приложение для iPhone. Операционная система Apple iOS предоставляет большое количество API-интерфейсов , как и любая другая операционная система, чтобы сделать это проще для Вас.

Например, если Вы хотите встроить веб-браузер для отображения одной или нескольких веб-страниц, Вам не нужно программировать собственный веб-браузер с нуля только для Вашего приложения. Вы
можете использовать WKWebView API для встраивания веб-браузера WebKit (Safari) в приложение.

Если Вы хотите снимать фотографии или видео с камеры iPhone, Вам не нужно писать свой собственный интерфейс камеры. Вы можете использовать API-интерфейс камеры для встраивания камеры iPhone в свое приложение. Если бы API не существовало, разработчикам приложений пришлось бы создавать собственное программное обеспечение камеры и интерпретировать входы аппаратного обеспечения камеры. Но разработчики операционной системы Apple сделали всю эту тяжелую работу, поэтому разработчики могут просто использовать API-интерфейс камеры для встраивания камеры, а затем продолжить написание своего приложения. И когда Apple улучшит API-интерфейс камеры, все приложения, которые используют его, автоматически воспользуются этим улучшением.

Это относится ко всем платформам. Например, Вы хотите создать диалоговое окно в Windows? Для этого есть API . Хотите поддерживать аутентификацию отпечатков пальцев на Android? Для этого есть API , так что Вам не нужно тестировать каждый датчик отпечатков пальцев любого производителя Android. Разработчикам не нужно повторно изобретать колесо снова и снова.

API-интерфейсы управляют доступом к ресурсам

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

Например, если Вы когда-либо посещали веб-сайт и видели в своем браузере сообщение о том, что веб-сайт запрашивает Ваше точное местоположение, этот веб-сайт пытается использовать API геолокации в Вашем веб-браузере. Веб-браузеры предоставляют API-интерфейсы, чтобы веб-разработчикам было легко получить доступ к Вашему местоположению — они могут просто спросить «где вы?», и браузер сделает тяжелую работу по доступу к GPS или соседним сетям Wi-Fi, чтобы найти Ваше физическое местоположение.

Однако, браузеры также предоставляют эту информацию через API, потому что можно контролировать доступ к ней. Когда веб-сайт хочет получить доступ к Вашему точному местоположению, единственный способ получить его — через API местоположения. И, когда веб-сайт пытается использовать его, Вы — пользователь — можете разрешить или отклонить этот запрос. Доступ к аппаратным ресурсам, таким как датчик GPS, возможен только через API, поэтому браузер может контролировать доступ к аппаратным средствам и ограничивать возможности приложений.

Этот же принцип используется для современных мобильных операционных систем, таких как iOS и Android, где мобильные приложения имеют разрешения, которые могут быть реализованы путем контроля доступа к API. Например, если разработчик пытается получить доступ к камере через API-интерфейс камеры, Вы можете отклонить запрос на разрешение, и приложение не будет иметь доступа к камере Вашего устройства.

Файловые системы, которые используют разрешения, как и в Windows, Mac и Linux, имеют те права, которые применяются API файловой системы. Типичное приложение не имеет прямого доступа к необработанному физическому жесткому диску. Вместо этого приложение должно получить доступ к файлам через API.

API используются для связи между службами

API также используются по другим причинам. Например, если Вы когда-либо видели объект Google Карты, встроенный на веб-сайт, этот веб-сайт использует API Карт Google для встраивания этой карты. Google предоставляет API-интерфейсы, подобные этим, для веб-разработчиков, которые затем могут использовать API-интерфейсы, чтобы собирать сложные объекты прямо на своем веб-сайте. Если таких API не существует, разработчикам, возможно, придется создавать свои собственные карты и предоставлять свои собственные данные карты, чтобы разместить небольшую интерактивную карту на веб-сайте.

И поскольку это API, Google может контролировать доступ к Картам Google на сторонних веб-сайтах, гарантируя, что они будут использовать его согласованным образом, а не пытаться беспорядочно внедрять фрейм, который показывает веб-сайт Google Maps, например.

Это относится ко многим различным онлайн-сервисам. Существуют API для запроса перевода текста из Google Translate или отображения комментариев Facebook или твитов из Twitter на веб-сайте.

Стандарт OAuth также определяет ряд API, которые позволяют Вам входить на сайт через другой сервис, например, использовать Ваши учетные записи Facebook, Google или Twitter для входа на новый веб-сайт без создания новой учетной записи пользователя только для этого сайта. API — это стандартные контракты, которые определяют, как разработчики взаимодействуют с сервисом, и вид продукции, которую разработчики должны ожидать получить.

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