ANTICHAT.RU    VIDEO.ANTICHAT.RU    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  

???????? RU ?????? ? RU ??????? ? ????? ???????. ? ??? ?????? ????!



ViKing – ?????? ????????? ??? ??????? ????????? ????? ?????????!

Вернуться   ????? ??????? > ???? > ?????? > ????????? ??????
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Смена пользователя Skype
  #1  
Старый 12.05.2010, 16:23
Аватара для AlexTheC0d3r
AlexTheC0d3r
Постоянный
Регистрация: 25.07.2008
Сообщения: 454
Провел на форуме:
2 недели

Репутация: 14 ±

Отправить сообщение для  AlexTheC0d3r с помощью ICQ
По умолчанию Смена пользователя Skype

Выкладываю из своих сорцов способ смены пользователя Skype:


1:Пролог
Решил написать небольшую статью опять про тот-же Skype
На этот раз я автоматизирую смену аккаунтов Skype с помощью WinAPI, т.к. с помощью обертки от девелоперов Skype ничего сделать не получится (Будем идти через зад )

2:Действия
Я не буду заострять внимание на создании проекта, расстановки баттонов, мемо и т.д., а сразу начну по-делу. Для того, чтобы завершить процесс (в нашем случае Skype) я использую следущую функцию, найденную на просторах инета:

PHP код:
 function KillTask(ExeFileNamestring): integer;
const
  
PROCESS_TERMINATE = $0001;
var
  
CoBOOL;
  
FSTHandle;
  
FPTProcessEntry32;
begin
  result 
:= 0;
  
FS := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS0);
  
FP.dwSize := Sizeof(FP);
  
Co := Process32First(FSFP);
  while 
integer(Co) <> do
  
begin
    
if ((UpperCase(ExtractFileName(FP.szExeFile)) = UpperCase(ExeFileName)) or
      (
UpperCase(FP.szExeFile) = UpperCase(ExeFileName))) then
      Result 
:= Integer(TerminateProcess(OpenProcess(PROCESS_TERMI  NATEBOOL(0),
        
FP.th32ProcessID), 0));
    
Co := Process32Next(FSFP);
  
end;
  
CloseHandle(FS);
end

Далее интересснее. Функция запуска Skype:

PHP код:
 function runSkype(sLoginstringsPassstring): Boolean;
var
  
// Переменные для хранения дескрипторов окон
  
hParenthChildHWND;
  
// Переменная счетчика цикла
  
iinteger;
begin
  
// Запускаем Skype. Не забываем указать путь к Skype на машине...
  // Можно считывать его автоматически по ключу реестра, который находится по адресу:
  // HKEY_LOCAL_MACHINE\SOFTWARE\Skype\Phone\SkypePath
  
WinExec(PChar('C:\Program Files\Skype\Phone\Skype.exe' ' /secondary'),
    
SW_NORMAL);
  
hParent := 0;
  
:= 0;
  
// Пока нет окна для входа в учетку
  
while hParent do
  
begin
    inc
(i);
    
hParent := FindWindow(PChar('TLoginForm.UnicodeClass'), PChar('Skype'));
    
Sleep(1000);
    
// Если его нет более ~20 секунд, выходим из функции
    
if 20 then
    begin
      result 
:= false;
      Exit;
    
end;
  
end;
 
  
//Добираемся до наших полей Логин и Пароль
  
hChild := FindWindowEx(hParent0PChar('TLoginControl'), nil);
  
hParent := hChild;
  
hChild := FindWindowEx(hParent0,
    
PChar('TNavigableTntComboBox.UnicodeClass'), nil);
  
// Вводим логин
  
SendMessage(hChildWM_SETTEXT0lparam(PChar(sLogin)));
  
hChild := FindWindowEx(hParent0PChar('TNavigableTntEdit.UnicodeClass'),
    
nil);
  
// Вводим пароль
  
SendMessage(hChildWM_SETTEXT0lparam(PChar(sPass)));
  
// И, вуаля, посылаем Return(Enter) в само окно чтобы подтвердить логин!
  
PostMessage(FindWindow(PChar('TLoginForm.UnicodeCl  ass'), PChar('Skype')),
    
WM_KEYDOWNVK_RETURN0);
end


Далее самый сок, функция смены пользователя:

PHP код:
 procedure changeAcc;
var
  
loginpasscurrHandlestring;
  
// Дескриптор хранения подтверждения авторизации
  
hAcceptHWND;
  
iInteger;
begin
  
По желанию можно удалить историю аккаунта Skype полностью
    С которого он был авторизирован до закрытия
   currHandle 
:= getAppDataPath 'Skype\' + skype.CurrentUser.Handle +
    '
\main.db'; }
    // Убиваем процессы
  KillTask('
skype.exe');
  KillTask('
skypePM.exe');
  { Как раз таки само удаление этого файла main.db
  if FileExists(currHandle) then
    DeleteFile(currHandle); }
 
  login := '
Ваш логин';
  pass := '
Ваш пароль';
 
  // Если логин не удался, выходим из функции
  if not runSkype(login, pass) then
    Exit;
 
  // Пока не можем приаттачиться, ждем
  while not skype.AttachmentStatus = SKYPE4COMLib_TLB.apiAttachAvailable do
  begin
    Sleep(100);
  end;
 
  // Далее обходим авторизацию Skype. Как, что и зачем
  // Описано в статье: http://zemus.us/05/obxod-avtorizacii-skypeapi.html
  skype.Attach(8, false);
  hAccept := 0;
  i := 0;
  while hAccept = 0 do
  begin
    Inc(i);
    hAccept := FindWindowEx(FindWindow(PChar('
tSkMainForm.Unicode  Class'), nil),
      0, PChar('
TZapCommunicator'), nil);
    sleep(1000);
    if i = 40 then
      Break;
  end;
 
  PostMessage(hAccept, WM_KEYDOWN, VK_TAB, 0);
  PostMessage(hAccept, WM_KEYDOWN, VK_RETURN, 0);
 
  // Ждем удачного аттача
  while not skype.AttachmentStatus = SKYPE4COMLib_TLB.apiAttachSuccess do
  begin
    Sleep(100);
  end;
 
  // Ждем пока пользователь не будет онлайн
  while not skype.CurrentUser.OnlineStatus = SKYPE4COMLib_TLB.olsOnline do
  begin
    Sleep(100);
  end;
  // ВСЕЕЕ!!!!
end; 


3:Заключение
Ну вот и все… Я научил кого-либо автоматизировать авторизацию в Skype!
В заключении скажу, что любое использование материалов с данного сайта, без моего соглашения и с отсутствием с ссылкой на данный веб-сайт, будет караться!

Удачи в кодинге!)
(c) Zemus (aka AlexTheC0d3r) http://zemus.us/
http://zemus.us/05/smena-polzovatelya-skype.html
 
Ответить с цитированием

  #2  
Старый 12.05.2010, 18:31
Аватара для Sin3v
Sin3v
Участник форума
Регистрация: 16.07.2008
Сообщения: 159
Провел на форуме:
1 неделю 5 дней

Репутация: 10 ±

Отправить сообщение для  Sin3v с помощью ICQ
По умолчанию

Вообще зачет, большое спасибо алексу)
Щас начну SinMobile обновлять)
 
Ответить с цитированием
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ebay перепишет Skype с нуля tux Мировые новости 3 31.07.2009 12:23
Сотовики vs Skype: битва началась jerrri Мировые новости 26 15.05.2009 11:58
FAQ&Hack – Skype И.Г. Авторские статьи 31 16.11.2007 16:54



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Быстрый переход

plohihzagrusok.net


Powered by: vBulletin Version 3.0.x
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

ANTICHAT.RU