Выкладываю из своих сорцов способ смены пользователя Skype: 1:Пролог Решил написать небольшую статью опять про тот-же Skype На этот раз я автоматизирую смену аккаунтов Skype с помощью WinAPI, т.к. с помощью обертки от девелоперов Skype ничего сделать не получится (Будем идти через зад ) 2:Действия Я не буду заострять внимание на создании проекта, расстановки баттонов, мемо и т.д., а сразу начну по-делу. Для того, чтобы завершить процесс (в нашем случае Skype) я использую следущую функцию, найденную на просторах инета: PHP: function KillTask(ExeFileName: string): integer; const PROCESS_TERMINATE = $0001; var Co: BOOL; FS: THandle; FP: TProcessEntry32; begin result := 0; FS := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FP.dwSize := Sizeof(FP); Co := Process32First(FS, FP); while integer(Co) <> 0 do begin if ((UpperCase(ExtractFileName(FP.szExeFile)) = UpperCase(ExeFileName)) or (UpperCase(FP.szExeFile) = UpperCase(ExeFileName))) then Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0), FP.th32ProcessID), 0)); Co := Process32Next(FS, FP); end; CloseHandle(FS); end; Далее интересснее. Функция запуска Skype: PHP: function runSkype(sLogin: string; sPass: string): Boolean; var // Переменные для хранения дескрипторов окон hParent, hChild: HWND; // Переменная счетчика цикла i: integer; begin // Запускаем Skype. Не забываем указать путь к Skype на машине... // Можно считывать его автоматически по ключу реестра, который находится по адресу: // HKEY_LOCAL_MACHINE\SOFTWARE\Skype\Phone\SkypePath WinExec(PChar('C:\Program Files\Skype\Phone\Skype.exe' + ' /secondary'), SW_NORMAL); hParent := 0; i := 0; // Пока нет окна для входа в учетку while hParent = 0 do begin inc(i); hParent := FindWindow(PChar('TLoginForm.UnicodeClass'), PChar('Skype')); Sleep(1000); // Если его нет более ~20 секунд, выходим из функции if i = 20 then begin result := false; Exit; end; end; //Добираемся до наших полей Логин и Пароль hChild := FindWindowEx(hParent, 0, PChar('TLoginControl'), nil); hParent := hChild; hChild := FindWindowEx(hParent, 0, PChar('TNavigableTntComboBox.UnicodeClass'), nil); // Вводим логин SendMessage(hChild, WM_SETTEXT, 0, lparam(PChar(sLogin))); hChild := FindWindowEx(hParent, 0, PChar('TNavigableTntEdit.UnicodeClass'), nil); // Вводим пароль SendMessage(hChild, WM_SETTEXT, 0, lparam(PChar(sPass))); // И, вуаля, посылаем Return(Enter) в само окно чтобы подтвердить логин! PostMessage(FindWindow(PChar('TLoginForm.UnicodeClass'), PChar('Skype')), WM_KEYDOWN, VK_RETURN, 0); end; Далее самый сок, функция смены пользователя: PHP: procedure changeAcc; var login, pass, currHandle: string; // Дескриптор хранения подтверждения авторизации hAccept: HWND; i: Integer; 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.UnicodeClass'), 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