Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
bodrich
101 / 91 / 14
Регистрация: 20.06.2010
Сообщений: 964
Записей в блоге: 16
Завершенные тесты: 1
1

Заполнение форм CppWebBrowser

05.02.2011, 19:28. Просмотров 4831. Ответов 12
Метки нет (Все метки)

Может кто подсказать, как сделать:
Вот зашел например на сайт вот как-то так:
C++
1
CppWebBrowser1->Navigate(WideString("http://site.ru));
Дальше надо заполнить две формы:
HTML5
1
2
<input type="text" value="login" onfocus="javascript:this.value=''" class="text" name="login_login">
<input type="password" value="password" onfocus="javascript:this.value=''"  class="text" name="login_password">
Ну и нажать кнопку войти
HTML5
1
<a href="#" class="button" onclick="javascript:$('#loginForm').submit(); return false;" style="padding-right:23px;">войти</a>
и как это сделать?)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2011, 19:28
Ответы с готовыми решениями:

Заполнение HTML форм на сайте
Нужен пример с помощью которого приложение автоматом заполнит HTML форму/формы на сайте и...

Заполнение html-форм при регистрации на сайте
Здравствуйте . Появилось желание , но на реализацию имеется только 1 мысль и довольно неудобная и...

CppWebBrowser
Мне нужно сделать так, чтобы мой CppWebBrowser заходил на определенный сайт ПЛЮС на то что...

CppWebBrowser
Возможно ли в CppWebBrowser нажимать на веб кнопки? Если да, то как?

CppWebBrowser
Собственно задача простая, подскажите как правильно это сделать, компоненты, обычная кнопка и...

12
LK
Заблокирован
05.02.2011, 19:34 2
Заполнение полей ввода и нажатие кнопки на HTML странице
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void __fastcall TForm1::ClickButton(String Name){// нажатие кнопки на форме. Name - имя кнопки в html коде
  TCppWebBrowser *WB=CWB;
  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::FillForm(String Name, String Data){
// заполнение поля на форме. Name - имя поля в html коде. 
  TCppWebBrowser *WB=CWB;
  CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2>                  pDoc;
  CComQIPtr<IHTMLElementCollection, &IID_IHTMLElementCollection>  pColl;
  CComQIPtr<IDispatch, &IID_IDispatch>                            pTmpDisp;
  CComQIPtr<IHTMLInputElement, &IID_IHTMLInputElement>            pElement;
  CComQIPtr<IDispatch, &IID_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));
      }
    }
  }
} //---------------------------------------------------------------------------------
Так же выбирается Radio Button. каждой позиции соответсвует значение - найти его можно в html коде.
Заполнение TEXTAREA
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void __fastcall TForm1::Button5Click(TObject *Sender)
{
  IHTMLDocument2 *pHTMLDocument = NULL;
  if (SUCCEEDED(WB->Document->QueryInterface(IID_IHTMLDocument2,(LPVOID*)&pHTMLDocument)))
  {
    if(pHTMLDocument!= NULL ) {
      IHTMLElementCollection *pAll = NULL;
      if ( SUCCEEDED ( pHTMLDocument -> get_all ( &pAll ) ) && pAll ) {
        TVariant vIndex = 0;
        IDispatch *pDisp1 = NULL;
        TVariant vName1 = "txtSM"; // ?? ???? ???? <TEXTAREA name=text ....
        WideString iniString = "текст смски"; //  TEXTAREA
        if ( SUCCEEDED ( pAll -> item ( vName1, vIndex, &pDisp1 ) ) && pDisp1 ) {
          IHTMLTextAreaElement *pInput = NULL;
          if ( SUCCEEDED ( pDisp1 -> QueryInterface ( IID_IHTMLTextAreaElement, ( LPVOID* )&pInput ) ) && pInput ) {
            pInput -> put_value ( iniString );
            pInput -> Release ();
          }
          pDisp1 -> Release ();
        }
      }
      pAll -> Release ();
    }
  }
}
WB это CppWebBrowser.
1
bodrich
101 / 91 / 14
Регистрация: 20.06.2010
Сообщений: 964
Записей в блоге: 16
Завершенные тесты: 1
05.02.2011, 22:12  [ТС] 3
Вопрос насчет Заполнение полей ввода на HTML странице.
Пишет, что неизвестный практически все команды, такие как CComQIPtr, pDoc, pTmpDisp и тп.
C++
1
void __fastcall TForm1::FillForm(String Name, String Data)
что за элемент FillForm?
0
LK
Заблокирован
05.02.2011, 23:03 4
это не элемент, это функция, хорошо бы ее прототип засунуть в хидер:
C++
1
2
3
private:    // User declarations
  void __fastcall FillForm(String Name, String Data);
// или в public: // User declarations
и, может, Вы какой компонент забыли перетащить на форму, или хидер подключить...
0
05.02.2011, 23:03
bodrich
101 / 91 / 14
Регистрация: 20.06.2010
Сообщений: 964
Записей в блоге: 16
Завершенные тесты: 1
06.02.2011, 14:55  [ТС] 5
и еще вопрос, как сделать остановку загрузки страницы?

Добавлено через 11 минут
и еще вопрос, как сделать проверку, если нету заданых на страничке форм/кнопок, то ошибка не писалась?
0
meisterlg
0 / 0 / 0
Регистрация: 15.02.2016
09.01.2012, 18:48 6
LK, большое спасибо за код. Очень помогло. Может еще подскажите, как редактировать ComboBox на html-страничке?
0
Limit-ED-itioN
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
20.02.2012, 18:07 7
Кто-нибудь, можете пожалуйста скинуть исходник дабы посмотреть поближе и как оно устроенно, ато так ничегошеньки понять не могу!
0
LK
Заблокирован
20.02.2012, 18:08 8
Limit-ED-itioN, а вставить код в кнопку самому воспитание не позволяет ?
0
Limit-ED-itioN
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
22.02.2012, 01:17 9
Цитата Сообщение от LK Посмотреть сообщение
Limit-ED-itioN, а вставить код в кнопку самому воспитание не позволяет ?
та я то вставлял, был бы он рабочий...))) Вообщем уже начитался литературы и все сделал)
0
Limit-ED-itioN
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
11.03.2012, 13:14 10
продолжим довольно интересную тему...)
Мучаюсь над добавлением картинки в поле обзор.
есть HTML код, который в нетронутом виде выглядит вот так:
HTML5
1
<DIV class=field><INPUT value=file type=hidden name=image[1]> <INPUT class="margintop3 " size=40 type=file name=image[1]> </DIV></DIV>
когда я добавляю фото вручную (d:\Aren\Program\Photos\Chev\1001\11.jpg) получаю код вида:
HTML5
1
<DIV class=field><INPUT value=file type=hidden name=image[1]> <INPUT class="margintop3 " value=D:\fakepath\11.jpg size=40 type=file name=image[1]> </DIV></DIV>
каким образом это можно сделать? ведь вводить в поле обзор нельзя, так как оно только риид, да еще и в предачу путь к файлу скрывается "fakepath"ем...
думал создать на форме список файлов и оттуда драг&дроп перекидывать их на браузер, но не получается...
0
LK
Заблокирован
11.03.2012, 13:46 11
сделать что ?

Добавлено через 38 секунд
И посмотрите в самом низу страниці Похожие темы
0
Limit-ED-itioN
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
11.03.2012, 14:20 12
сделать - добавить картинку( .jpg файл) в поле обзор...
0
Miller-1981
33 / 32 / 2
Регистрация: 26.01.2009
Сообщений: 592
12.03.2012, 18:51 13
Цитата Сообщение от LK Посмотреть сообщение
Заполнение полей ввода и нажатие кнопки на HTML странице
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void __fastcall TForm1::ClickButton(String Name){// нажатие кнопки на форме. Name - имя кнопки в html коде
  TCppWebBrowser *WB=CWB;
  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::FillForm(String Name, String Data){
// заполнение поля на форме. Name - имя поля в html коде. 
  TCppWebBrowser *WB=CWB;
  CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2>                  pDoc;
  CComQIPtr<IHTMLElementCollection, &IID_IHTMLElementCollection>  pColl;
  CComQIPtr<IDispatch, &IID_IDispatch>                            pTmpDisp;
  CComQIPtr<IHTMLInputElement, &IID_IHTMLInputElement>            pElement;
  CComQIPtr<IDispatch, &IID_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));
      }
    }
  }
} //---------------------------------------------------------------------------------
Так же выбирается Radio Button. каждой позиции соответсвует значение - найти его можно в html коде.
Заполнение TEXTAREA
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void __fastcall TForm1::Button5Click(TObject *Sender)
{
  IHTMLDocument2 *pHTMLDocument = NULL;
  if (SUCCEEDED(WB->Document->QueryInterface(IID_IHTMLDocument2,(LPVOID*)&pHTMLDocument)))
  {
    if(pHTMLDocument!= NULL ) {
      IHTMLElementCollection *pAll = NULL;
      if ( SUCCEEDED ( pHTMLDocument -> get_all ( &pAll ) ) && pAll ) {
        TVariant vIndex = 0;
        IDispatch *pDisp1 = NULL;
        TVariant vName1 = "txtSM"; // ?? ???? ???? <TEXTAREA name=text ....
        WideString iniString = "текст смски"; //  TEXTAREA
        if ( SUCCEEDED ( pAll -> item ( vName1, vIndex, &pDisp1 ) ) && pDisp1 ) {
          IHTMLTextAreaElement *pInput = NULL;
          if ( SUCCEEDED ( pDisp1 -> QueryInterface ( IID_IHTMLTextAreaElement, ( LPVOID* )&pInput ) ) && pInput ) {
            pInput -> put_value ( iniString );
            pInput -> Release ();
          }
          pDisp1 -> Release ();
        }
      }
      pAll -> Release ();
    }
  }
}
WB это CppWebBrowser.
для
HTML5
1
2
3
4
<div class="class1">
  <textarea id="post_field"></textarea>
</div>
pInput -> put_value ( iniString );
не работает - элемент находит? но в него ниче не пишет
0
12.03.2012, 18:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2012, 18:51

CppWebBrowser
Как сохранить страницу из него в html файл

CppWebBrowser
Помогите разобраться C++Builder 2009 пытаюсь перейти по адресу в поле редактирования Edit1 в...

CppWebBrowser
немогу присвоить свойство OnBeforeNavigate2; в крадце: Есть массив TCppWebBrowser web; и есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru