Работа с библиотекой Skype4COM. Delphi api. Часть 1: Извлечение информации о пользователях
Ожидает приглашения
Здавствуйте, в этой статье я хотел бы рассказать о Skype API для Delphi.
Skype4COM — это официальная библиотека API для взаимодействия с программой Skype.
В Delphi эта библиотека уже встроена, её нужно только установить.
Устанавливается она таким вот образом: переходим в меню Component, выбираем ImportComponent, в появившемся окне ставим галочку на Import ActiveX Control, жмем Next из списка выбираем Skype4COM 1.0 Type Library, в alette Page выбираем в какую вкладку в палитре компонентов устанавливать далее Next и Finish.
Переходим к написанию кода:
Создаем новый проект, на форму кидаем 2 GroupBox'а и 2 ListBox'а. В раздел uses подключаем модуль SKYPE4COMLib_TLB.
Объявим глобальную переменную skype:Tskype.
В FormCreate пишем следующий код:
Add('Пол: '+skype.Convert.UserSexToText(skype.CurrentUser.Sex));
Add('Онлайн статус: '+skype.Convert.OnlineStatusToText(skype.CurrentUser.OnlineStatus));
Значение возвращаемые skype.CurrentUser.Sex и skype.CurrentUser.OnlineStatus имеют тип TOleEnum
для вывода в ListBox их необходимо конвертировать в String, для конвертирования используется метод skype.Convert.*
Далее выделяем ListBox2 и в Object Inspector'е переходим на вкладку Events, два раза кликаем по
событию OnDblClick и пишем следующий код:
Разберем строчку GroupBox1.Caption:=(skype.Friends.Item[ListBox2.ItemIndex+1].Handle);
skype.Friends.Item[Номер логина выделенного в ListBox'е2]
ListBox2.ItemIndex+1 — Получаем номер выделенного логина в ListBox'е2.
На этом всё!
Полный код программы:
Skype4COM — это официальная библиотека API для взаимодействия с программой Skype.
В Delphi эта библиотека уже встроена, её нужно только установить.
Устанавливается она таким вот образом: переходим в меню Component, выбираем ImportComponent, в появившемся окне ставим галочку на Import ActiveX Control, жмем Next из списка выбираем Skype4COM 1.0 Type Library, в alette Page выбираем в какую вкладку в палитре компонентов устанавливать далее Next и Finish.
Переходим к написанию кода:
Создаем новый проект, на форму кидаем 2 GroupBox'а и 2 ListBox'а. В раздел uses подключаем модуль SKYPE4COMLib_TLB.
Объявим глобальную переменную skype:Tskype.
Извлечение информации о пользователе
В FormCreate пишем следующий код:
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
skype:=SKYPE4COMLib_TLB.TSkype.Create(nil); // Создаем объект TSkype
skype.Attach(6,true); // Подключаемся к программе скайп
Form1.Caption:=('Версия Скайпа: '+skype.Version); // В caption'е формы выводим версию программы
GroupBox1.Caption:=(skype.CurrentUser.Handle); // В caption'е GroupBox'а выводим логин текущего пользователя
with listbox1.Items do begin // В ListBox1 выводим информацию о текущем пользователе
Add('Язык: '+skype.CurrentUser.Language);
Add('Страна: '+skype.CurrentUser.Country);
Add('Местоположение: '+skype.CurrentUser.FullName);
Add('Дата рождения: '+Datetostr(skype.CurrentUser.Birthday));
Add('Город: '+skype.CurrentUser.City);
Add('Домашний телефон: '+skype.CurrentUser.PhoneHome);
Add('Робочий телефон: '+skype.CurrentUser.PhoneOffice);
Add('Мобильный телефон: '+skype.CurrentUser.PhoneMobile);
Add('Домашняя страница: '+skype.CurrentUser.Homepage);
Add('Пол: '+skype.Convert.UserSexToText(skype.CurrentUser.Sex));
Add('Онлайн статус: '+skype.Convert.OnlineStatusToText(skype.CurrentUser.OnlineStatus));
end;
// В ListBox2 выводим список друзей текущего пользователя
for i:=1 to Skype.Friends.Count do
begin
if Skype.Friends.Item[i].Handle<>'' then
ListBox2.Items.Add(Skype.Friends.Item[i].Handle); // Добавляем список друзей в ListBox2
end;
end;
Вот список того, что можно извлечь о пользователе скайпа
- skype.CurrentUser.Handle — Логин (тип возвращаемого значения WideString)
- skype.CurrentUser.FullName — Полное имя (тип возвращаемого значения WideString)
- skype.CurrentUser.Birthday — День рождение (тип возвращаемого значения TDateTime)
- skype.CurrentUser.Sex — Пол (тип возвращаемого значения TOleEnum)
- skype.CurrentUser.Country — Страна (тип возвращаемого значения WideString)
- skype.CurrentUser.Province — Область (тип возвращаемого значения WideString)
- skype.CurrentUser.City — Город (тип возвращаемого значения WideString)
- skype.CurrentUser.PhoneHome — Домашний телефон (тип возвращаемого значения WideString)
- skype.CurrentUser.PhoneOffice — Рабочий телефон (тип возвращаемого значения WideString)
- skype.CurrentUser.PhoneMobile — Мобильный телефон (тип возвращаемого значения WideString)
- skype.CurrentUser.Homepage — Домашняя страница (тип возвращаемого значения WideString)
- skype.CurrentUser.OnlineStatus — Статус (тип возвращаемого значения TOleEnum)
- skype.CurrentUser.LastOnline — Был онлайн (тип возвращаемого значения TDateTime)
- skype.CurrentUser.CountryCode — Код страны (тип возвращаемого значения WideString)
- skype.CurrentUser.Timezone — Часовой пояс (тип возвращаемого значения Integer)
- skype.CurrentUser.Language — Язык (тип возвращаемого значения WideString)
- skype.CurrentUser.LanguageCode — Код языка (тип возвращаемого значения WideString)
Теперь подробнее о двух строках
Add('Пол: '+skype.Convert.UserSexToText(skype.CurrentUser.Sex));
Add('Онлайн статус: '+skype.Convert.OnlineStatusToText(skype.CurrentUser.OnlineStatus));
Значение возвращаемые skype.CurrentUser.Sex и skype.CurrentUser.OnlineStatus имеют тип TOleEnum
для вывода в ListBox их необходимо конвертировать в String, для конвертирования используется метод skype.Convert.*
Список методов для конвертирования строк
- skype.Convert.OnlineStatusToText()
- skype.Convert.TextToOnlineStatus()
- skype.Convert.BuddyStatusToText()
- skype.Convert.TextToBuddyStatus()
- skype.Convert.CallStatusToText()
- skype.Convert.TextToCallStatus()
- skype.Convert.CallTypeToText()
- skype.Convert.TextToCallType()
- skype.Convert.UserSexToText()
- skype.Convert.TextToUserSex()
- skype.Convert.ConnectionStatusToText()
- skype.Convert.TextToConnectionStatus()
- skype.Convert.UserStatusToText()
- skype.Convert.TextToUserStatus()
- skype.Convert.CallFailureReasonToText()
- skype.Convert.AttachmentStatusToText()
- skype.Convert.ChatLeaveReasonToText()
- skype.Convert.ChatStatusToText()
- skype.Convert.VoicemailTypeToText()
- skype.Convert.VoicemailStatusToText()
- skype.Convert.TextToVoicemailStatus()
- skype.Convert.VoicemailFailureReasonToText()
- skype.Convert.ChatMessageStatusToText()
- skype.Convert.TextToChatMessageStatus()
- skype.Convert.ChatMessageTypeToText()
- skype.Convert.TextToChatMessageType()
- skype.Convert.TextToAttachmentStatus()
- skype.Convert.GroupTypeToText()
- skype.Convert.TextToGroupType()
- skype.Convert.CallVideoStatusToText()
- skype.Convert.CallVideoSendStatusToText()
- skype.Convert.SmsMessageStatusToText()
- skype.Convert.SmsMessageTypeToText()
- skype.Convert.SmsTargetStatusToText()
Извлечение информации о друзьях
Далее выделяем ListBox2 и в Object Inspector'е переходим на вкладку Events, два раза кликаем по
событию OnDblClick и пишем следующий код:
procedure TForm1.ListBox2DblClick(Sender: TObject);
begin
GroupBox1.Caption:=(skype.Friends.Item[ListBox2.ItemIndex+1].Handle); // Выбранный в ListBox2 логин
with listbox1.Items do begin
Clear;
Add('Язык: '+skype.Friends.Item[ListBox2.ItemIndex+1].Language);
Add('Страна: '+skype.Friends.Item[ListBox2.ItemIndex+1].Country);
Add('Полное имя: '+skype.Friends.Item[ListBox2.ItemIndex+1].FullName);
Add('Дата рождения: '+Datetostr(skype.Friends.Item[ListBox2.ItemIndex+1].Birthday));
Add('Город: '+skype.Friends.Item[ListBox2.ItemIndex+1].City);
Add('Домашний телефон: '+skype.Friends.Item[ListBox2.ItemIndex+1].PhoneHome);
Add('Рабочий телефон: '+skype.Friends.Item[ListBox2.ItemIndex+1].PhoneOffice);
Add('Мобильный телефон: '+skype.Friends.Item[ListBox2.ItemIndex+1].PhoneMobile);
Add('Домашняя страница: '+skype.Friends.Item[ListBox2.ItemIndex+1].Homepage);
Add('Пол: '+skype.Convert.UserSexToText(skype.Friends.Item[ListBox2.ItemIndex+1].Sex));
Add('Онлайн статус: '+skype.Convert.OnlineStatusToText(skype.Friends.Item[ListBox2.ItemIndex+1].OnlineStatus));
end;
end;
Разберем строчку GroupBox1.Caption:=(skype.Friends.Item[ListBox2.ItemIndex+1].Handle);
skype.Friends.Item[Номер логина выделенного в ListBox'е2]
ListBox2.ItemIndex+1 — Получаем номер выделенного логина в ListBox'е2.
На этом всё!
Полный код программы:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, SKYPE4COMLib_TLB, Vcl.StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
ListBox2: TListBox;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
procedure FormCreate(Sender: TObject);
procedure ListBox2DblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
skype:Tskype;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
skype:=SKYPE4COMLib_TLB.TSkype.Create(nil);
skype.Attach(6,true);
//Form1.Caption:=('Версия Скайпа: '+skype.Version);
GroupBox1.Caption:=(skype.CurrentUser.Handle);
with listbox1.Items do begin
Add('Язык: '+skype.CurrentUser.Language);
Add('Страна: '+skype.CurrentUser.Country);
Add('Местоположение: '+skype.CurrentUser.FullName);
Add('Дата рождения: '+Datetostr(skype.CurrentUser.Birthday));
Add('Город: '+skype.CurrentUser.City);
Add('Домашний телефон: '+skype.CurrentUser.PhoneHome);
Add('Робочий телефон: '+skype.CurrentUser.PhoneOffice);
Add('Мобильный телефон: '+skype.CurrentUser.PhoneMobile);
Add('Домашняя страница: '+skype.CurrentUser.Homepage);
Add('Пол: '+skype.Convert.UserSexToText(skype.CurrentUser.Sex));
Add('Онлайн статус: '+skype.Convert.OnlineStatusToText(skype.CurrentUser.OnlineStatus));
end;
for i:=1 to Skype.Friends.Count do
begin
if Skype.Friends.Item[i].Handle<>'' then
ListBox2.Items.Add(Skype.Friends.Item[i].Handle);
end;
end;
procedure TForm1.ListBox2DblClick(Sender: TObject);
begin
GroupBox1.Caption:=(skype.Friends.Item[ListBox2.ItemIndex+1].Handle);
with listbox1.Items do begin
Clear;
Add('Язык: '+skype.Friends.Item[ListBox2.ItemIndex+1].Language);
Add('Страна: '+skype.Friends.Item[ListBox2.ItemIndex+1].Country);
Add('Полное имя: '+skype.Friends.Item[ListBox2.ItemIndex+1].FullName);
Add('Дата рождения: '+Datetostr(skype.Friends.Item[ListBox2.ItemIndex+1].Birthday));
Add('Город: '+skype.Friends.Item[ListBox2.ItemIndex+1].City);
Add('Домашний телефон: '+skype.Friends.Item[ListBox2.ItemIndex+1].PhoneHome);
Add('Робочий телефон: '+skype.Friends.Item[ListBox2.ItemIndex+1].PhoneOffice);
Add('Мобильный телефон: '+skype.Friends.Item[ListBox2.ItemIndex+1].PhoneMobile);
Add('Домашняя страница: '+skype.Friends.Item[ListBox2.ItemIndex+1].Homepage);
Add('Пол: '+skype.Convert.UserSexToText(skype.Friends.Item[ListBox2.ItemIndex+1].Sex));
Add('Онлайн статус: '+skype.Convert.OnlineStatusToText(skype.Friends.Item[ListBox2.ItemIndex+1].OnlineStatus));
end;
end;
end.