Управление Web-страничкой с помощью С++builder

  • Автор темы -
  • Дата начала

Гость
#1
В общем, пытаюсь написать что то похожее на программу для отправки смс. Использую эту страничку нашего провайдера:отправка смс на IDC .

На этой странце 4 поля ввода картинка с капчей и кнопка"отправить". Симитировать нажатие на кнопку у меня получилось, а также получилось заполнить поля ввода номера телефона(name="txtAddr") и поле ввода капчи(name="code"). Сделал я это с помощью следующего кода:

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Раскрывающийся Текст кода</div></div><div class="sp-body"><div class="sp-content">
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)//вставить номер
{
String Name = "txtAddr";  //
String Data = Edit1->Text;
TComInterface<IHTMLDocument2>		 pDoc;
TComInterface<IHTMLElementCollection> pColl;
TComInterface<IDispatch>			  pTmpDisp;
TComInterface<IHTMLInputElement>	  pElement;
TComInterface<IDispatch>			  pDisp;
if ( SUCCEEDED (WB->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDoc)))	{
if ( SUCCEEDED (pDoc->get_all(&pColl)))				 {
if ( SUCCEEDED (pColl->item(TVariant(WideString(Name)), TVariant(0), &pDisp))) {
pElement = pDisp;
pElement->put_value(WideString(Data));
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)//отправить смс
{
String Name="Submit2";
if( WB->Document )	{
TComInterface<IHTMLDocument2> pDocument;
WB->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDocument);
if( pDocument )		{
TComInterface<IHTMLElementCollection> pCollection;
pDocument->get_all(&pCollection);
if( pCollection )			{
TComInterface<IDispatch> pDisp;
pCollection->item(TVariant(WideString(Name)), TVariant(0), &pDisp);
if( pDisp )				{
TComInterface<IHTMLElement> pElement;
pDisp->QueryInterface(IID_IHTMLElement, (LPVOID*)&pElement);
if( pElement )					{
pElement->click();
}
}
}
}
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender) //ввод капчи
{
String Name = "code";  //
String Data = Edit1->Text;
TComInterface<IHTMLDocument2>		 pDoc;
TComInterface<IHTMLElementCollection> pColl;
TComInterface<IDispatch>			  pTmpDisp;
TComInterface<IHTMLInputElement>	  pElement;
TComInterface<IDispatch>			  pDisp;
if ( SUCCEEDED (WB->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDoc)))	{
if ( SUCCEEDED (pDoc->get_all(&pColl)))				 {
if ( SUCCEEDED (pColl->item(TVariant(WideString(Name)), TVariant(0), &pDisp))) {
pElement = pDisp;
pElement->put_value(WideString(Data));
}
}
}
}

Пытался также заполнить остальные два поля однако выдает ошибку , что то вроде Query интерфейс не выполняется и т д...

Вопрос звучит так: что мне нужно поменять в моем коде чтоб можно было заполнить 1-е и 3-е поле ввода? Или может у кого нибудь есть исходник...
Буду очень благодарен за любую помощь.
 

Гость
#2
Так что никто не может мне помочь с заполнением этих полей ввода..?
Подскажите хоть как мне вывести в окно программы картинку с капчей, без всего остального содержимого сайта?
 

Гость
#3
В общем c Textarea я разобрался. Осталось одно поле ввода типа SELECT.
Как выбрть значение из выпадающего меню CELECT?
Вот что в HTML странице:
PHP:
<td><select name="prefix" class="inp"> 
<option selected>777</option> 
<option>774</option> 
<option>778</option> 
<option>779</option> 
<option>562</option> 
</select> 
</td>
Как мне выбрать одно из этих значений? Может связать это как то с ComboBox?
В общем здесь полный тупик.... Надеюсь хоть кто-нибудь обратит внимание на эту тему...
 

Гость
#4
Или такой вопрос: Как на форму вывести картинку с капчей?
Вот как она выглядит в ХТМЛ-е:
PHP:
<td valign="middle"> 
<a href="#" onclick="return kaptcha_reload();" title="Кликните чтобы обновить код"><img src="/code.php" 
alt="Securitycode" border="0" width="120" height="60" id="kaptcha"></a></td>
Это надо еще один cppWebBrowser?
 

Гость
#5
И так вот что я нашел по поводу заполнения SELECT:

Код:
		IDispatch *pDisp1=NULL; TVariant vIndex = 1;
IHTMLElementCollection *pAll;

TVariant vName1 = "prefix"; // ??? HTML ????
if(SUCCEEDED(pAll->item(vName1, vIndex, &pDisp1)) && pDisp1)
{
IHTMLSelectElement *pInput = NULL;
if(SUCCEEDED(pDisp1->QueryInterface(IID_IHTMLSelectElement,(LPVOID*)&pInput)) && pInput)
{
pInput->put_value(WideString("String"));
pInput->Release();
}
pDisp1->Release();
}
это компилируется хорошо но при работе выдает ошибку..