это опять я) в общем не соображу как сделать проверку на правильность введенной капчи. к примеру при логине я сделал так: Code: while(cap_while>0) { //TMemoryStream*cap=new TMemoryStream(); AnsiString page; page=HTTP->Get("http://vkontakte.ru/login.php?op=a_login_attempt"); if (page.Pos("captcha_sid")) { pause=1; AnsiString cap_sid; AnsiString capurl ="http://vkontakte.ru/login.php?op=a_login_attempt&captcha_sid="; AnsiString cap_key="&captcha_key="; cap_sid=page.SubString(page.Pos("captcha_sid")+14, +12); HTTP->Get("http://vkontakte.ru/captcha.php?s=1&sid="+cap_sid,cap); cap->SaveToFile(cap_sid+".jpg"); Form1->Image1->Picture->LoadFromFile(cap_sid+".jpg"); DeleteFile(cap_sid+".jpg"); while(pause>0) //ждем ожидания нажатия на кнопку { ::Sleep(3000); } HTTP->Get(capurl+cap_sid+cap_key+Form1->Edit1->Text); } pause=1; if (page.Pos("vklogin")) { break; } cap->Free(); } //конец цикла распознавания капчи так как ее можно проверить посылая повторный запрос на http://vkontakte.ru/login.php?op=a_login_attempt. а как быть со стенами? ведь сначала идет отправка мессаги а только потом появляется капча. и если ее не правильно ввести то как отследить этот момент? в общем я запутался ) нужен совет бывалых. заранее благодарю.
Code: while(pause>0) //ждем ожидания нажатия на кнопку { ::Sleep(3000); } fix it Code: wait_pause_keyup() { WaitForSingleObject(PauseEvent, INFINITE); } signal_pause_keyup() { SetEvent(PauseEvent); }
справился и как сделать: TMemoryStream*cap=new TMemoryStream(); если вне цикла пишу то не робит приходится в цикл пихать.