Здравствуйте, уже давно экспериментирую с разными API, крупных программ, приложений, сервисов, которые предоставляют возможность использовать свои данные через API. Уже я немного рассказывал в блоге про API одного из популярных менеджеров закачек — DownloadMaster (DM), рассказывал про API одной из самой крупной российской социальной сети — Vkontakte API, ну вот и настал момент поговорить еще об одном из популярных приложений — это Skype, который вроде бы как написан на Delphi. Разработчики нам также предоставляют использовать API и писать свои приложения под Skype. При написании приложений я столкнулся с массой неудобств, ну не с массой, я только с данной библиотекой сам начал разбираться, но пару неудобств скажу. Во-первых для того, чтобы использовать данные Skype (своего аккаунта) он естественно должен быть запущен, Vkontakte API такого нету, все можно авторитизироваться через программный интерфейс и работать с данными, но в Skype такого к сожалению нету. Во-вторых, при работе с данными Skype все время необходимо давать доступ в Skype для Вашего приложения.
То есть в главном окне Skype появляется всплывающее сообщение о том, что такое-то приложение хочет получить доступ к данным, Skype запрашивает разрешение на доступ к данным Вашего приложения и Вы выбираете да или нет. С одной стороны, эти все действие оправданы, то есть очень хорошая безопасность и за все отвечает только сам пользователь (за потерю данных, например).
Данная статья является вводной, мы сделаем небольшой обзор данной библиотеки. Во-первых мы рассмотрим где взять вообще эту библиотеку и как ее установить, а во-вторых рассмотрим как, например узнать версию Skype или Ваше имя в Skype, то есть все примитивно.
Ну что, давайте начнем с установки Skype. Если у Вас уже установлено само приложение Skype, то качать дополнительных библиотек Вам уже не нужно. Запустим Delphi и выполним команду Component-Import ActiveX Control... Далее в списке ищем библиотеку Skype4Com, которая записана в списке как Skype4Com 1.0 Type Library (Version 1.0)
Ну а дальше нажимаем на кнопку «Install» и устанавливаем как обычный компонент. После этого на вкладке ActiveX не должно появиться никакого компонента, но необходимо в Uses подключить модуль SKYPE4COMLib_TLB. Далее мы в этой статье определим версию, установленного Skype, а также узнаем свой собственный ник и наше нахождение, то есть, другими словами страну, которую Вы указывали при регистрации. Кстати, вот только, что еще один минус заметил, что когда Ваше приложение у Skype запрашивает разрешение на получение данных, то в это время Ваше приложение зависает до того момента как Вы не разрешите или не запретите доступ для Вашего приложения. Кстати, если Вы запретите доступ для Вашего приложения, то просто-напросто будет ошибка, так что не забывайте ее отслеживать.
На форме у меня следующие компоненты
- TButton
- TListView
TListView - в нем мы будем отображать результат сразу с заголовками. В свойстве ViewStyle компонента TListView я установил в vsReport. После этого нажал по двойным щелчком мыши по компоненту TListView и создал 2 колонки Name и Result.
После чего на событие OnClick кнопки написал следующий код
procedure TForm1.Button1Click(Sender: TObject);
var
Skype:TSkype;
i:integer;
begin
try
ActiveX.CoInitialize(nil);
Skype:=SKYPE4COMLib_TLB.TSkype.Create(nil);
Skype.Attach(6,True);
ListView1.Items.Add.Caption:='Version';
ListView1.Items.Item[0].SubItems.Add(Skype.Version);
ListView1.Items.Add.Caption:='Name';
ListView1.Items.Item[1].SubItems.Add(Skype.CurrentUserHandle);
ListView1.Items.Add.Caption:='Location';
ListView1.Items.Item[2].SubItems.Add(Skype.PredictiveDialerCountry);
FreeAndNil(Skype);
except
on e:Exception do
ShowMessage(e.Message);
end;
end;
Первой строчкой мы инициализируем COM библиотеку на всякий случай, хоть и в данном случае необязательно. С помощью Skype.Attach(6,True) мы подключаемся к нашему API, ну а дальше используем обычные свойства и функции нашей библиотеки (версия, ник, местонахождение). Дальше будем рассматривать как отправлять сообщения, искать пользователей, а также получать список контактов.