1. wallapopmanager18.05.2025 в 21:04от
Загрузка...
Загрузка...

Skype спаммер. Исходный код на Delphi.

Тема в разделе "С/С++/Pascal/Delphi", создана пользователем Starset, 07.12.2015.

  1. Starset

    Starset

    Статус:
    Оффлайн
    Регистрация:
    01.11.15
    Сообщения:
    82
    Репутация:
    69 +/-
    Написал Skype спаммер на быструю руку. Данная статья будет с минимальными пояснениями. Предлагаю ознакомиться с исходным кодом готового решения.

    Конечная VCL форма - http://i.prntscr.com/b276a03d24664d3ab39143c354f7e663.png

    Для разработки я буду использовать модуль 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;
    На разработку ушло не более двух часов, потому не судите строго. Исходники прикладываю. Будут вопросы - милости прошу, спрашивайте.

    Файлы - https://www.sendspace.com/file/amzkce
    ВТ не нужен - нету exe файлов.
     
    Последнее редактирование: 13.12.2015