Кто-нибудь знает как обойти подтверждение Скайпа на использование приложения, использующего Skype API? Методами Skype API, скорее всего, никак, но может кто знает другое решение?
Слушайте, я правильно понимаю, что аттачится к скайпу нужно в отдельном потоке? Не могли бы вы код забросить, если не сложно. С АПИ-функциями вместе
Ну потому что Attach же не отдаст управление следующей комманде пока не выполнится SKYPE4COMLib::ISkypePtr pSkype(__uuidof(SKYPE4COMLib::Skype)); pSkype->Attach(6, VARIANT_TRUE); AfxMessageBox(L"OLOLO"); До аттача - никакого запроса на подтверждение нету, а месаджбокс после аттача никогда не выведется. Вот я и просил код, чтобы уразуметь, когда окна ловить. Думал аттач пустить в поток ну либо окна уже ловить в потоке, не столь важно, главное что в разных потоках. Так?
используй pSkype->Attach(6, VARIANT_FALSE); UPD: вот, написал целую статью, посвященная этому http://zemus.us/05/obxod-avtorizacii-skypeapi.html
:-* Ну у меня в принципе почти так же было, если не считать потока. Но есть одна проблемка. Работает ли этот код для последней версии Скайпа? Потому что у меня не работает таб+энтер в 4.0.1.179
Ну всё! Мочи нет! Не работает ни два таба, ни три ни без табов. По эксепшену вылазит и все тут. Ну что здесь-то не так может быть? CString CSkypeWork::getSkypeVersion2(void) { SKYPE4COMLib::ISkypePtr pSkype(__uuidof(SKYPE4COMLib::Skype)); pSkype->Attach(6, VARIANT_FALSE); HWND hAccept = NULL; int i = 0; while (hAccept == 0) { hAccept = FindWindowEx(FindWindow(_T("tSkMainForm.UnicodeClass"), NULL), NULL, _T("TZapCommunicator"), NULL); Sleep(1000); i++; if (i > 7) return _T("Can't get the version. Timeout"); } PostMessage(hAccept, WM_KEYDOWN, VK_TAB, 0); PostMessage(hAccept, WM_KEYDOWN, VK_RETURN, 0); CString ver; try { CString v = pSkype->GetVersion(); CString wr = pSkype->GetApiWrapperVersion(); ver = _T("Skype version: ") + v + _T(" API Wrapper version: ") + wr; } catch(...) { ver = _T("Exception. Can't access"); } return ver; }