Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.96/24: Рейтинг темы: голосов - 24, средняя оценка - 4.96
ILUT
0 / 0 / 0
Регистрация: 12.05.2007
Сообщений: 58
1

Поиск подстроки на странице в CppWebBrowser

07.03.2009, 02:44. Просмотров 4497. Ответов 6
Метки нет (Все метки)

Доброе время суток. Подскажите пожалуйста как можно реализовать поиск подстроки в тексте страницы, загруженной в CppWebBrowser, и если данная подстрока есть, то выделить найденный текст. Причем самый сложный вопрос, пожалуй, это как выделить нужный текст. Заранее благодарю за помощь!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2009, 02:44
Ответы с готовыми решениями:

Ссылки на странице из CppWebBrowser открывать в дефолтном браузере
Здравствуйте, подскажите пожалуйста как можно сделать так, чтобы ссылки на странице из...

Поиск файлов с помощью CppWebBrowser
Работавю с CppWebBrowser, хочу сделать так что бы при нажании ктоки (там пойдет решиние и...

Поиск нужного текста в компоненте CppWebBrowser
Помогите перевести. Суть следующая, организовать поиск нужного текста в компоненте CppWebBrowser1,...

Поиск подстроки внутри данной строки, замена найденной подстроки на другую строку
Выполнить поиск подстроки внутри данной строки,замену найденной подстроки на другую строку Пример...

Поиск подстроки в строке и вывод подстроки
Удалите пожалуйста, разобрался

6
ILUT
0 / 0 / 0
Регистрация: 12.05.2007
Сообщений: 58
09.03.2009, 03:58  [ТС] 2
Вот нашел неплохую информацию:

C++
1
2
3
4
5
6
7
8
9
int k=CppWebBrowser1->OleObject.OlePropertyGet("Document").OlePropertyGet("All").OlePropertyGet("Length");
   for(int i=0;i<=k-1;i++)
   {
      if(strstr(VarToStr(Form1->CppWebBrowser1->OleObject.OlePropertyGet("Document").OlePropertyGet("All").OleFunction("Item", i).OlePropertyGet("InnerText")).c_str(),"Г±ГЄГ*Г§Г*ГІГј") != 0)
      {
         Form1->CppWebBrowser1->OleObject.OlePropertyGet("Document").OlePropertyGet("All").OleFunction("Item", i).OlePropertyGet("Style").OlePropertySet("Color","#FFFF00");
         Form1->CppWebBrowser1->OleObject.OlePropertyGet("Document").OlePropertyGet("All").OleFunction("Item", i).OleFunction("ScrollIntoView",false);
      }
   }
Но минус в том, что я получаю доступ ко всему тексту на моей странице, т.е. выделяется сразу весь текст. Возможно кто нибудь может подсказать как исходя из данного кода, суметь выделять только слова или еще лучше если слоги по отдельности. Буду благодарен за помощь!
0
oxotnik
1634 / 1107 / 75
Регистрация: 21.08.2008
Сообщений: 4,648
Записей в блоге: 1
Завершенные тесты: 1
09.03.2009, 09:13 3
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
//in hpp
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "SHDocVw_OCX.h"
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TPanel *Panel1;
    TButton *Button1;
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall Button1Click(TObject *Sender);
private:    // User declarations
    TCppWebBrowser *CppWebBrowser;
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
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
//in cpp
...
#include "mshtmhst.h"
#include "mshtmcid.h"
#include "mshtml.h"
...
#define HTMLID_FIND 1
...
const GUID CGID_IWebBrowser =
    {0xed016940, 0xbd5b, 0x11cf,
    {0xba, 0x4e, 0x0, 0xc0, 0x4f, 0xd7, 0x08, 0x16}} ;
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    LPDISPATCH lpDispatch = CppWebBrowser->ControlInterface->get_Document();
    if(lpDispatch)
    {
        IOleCommandTarget* pcmd=NULL;
        if( SUCCEEDED(lpDispatch->QueryInterface(IID_IOleCommandTarget,(void**)&pcmd) ) )
        {
            pcmd->Exec(&CGID_IWebBrowser, HTMLID_FIND, 0, NULL, NULL);
            pcmd->Release();
        }
        lpDispatch->Release();
    }
}
0
ILUT
0 / 0 / 0
Регистрация: 12.05.2007
Сообщений: 58
09.03.2009, 12:27  [ТС] 4
Спасиба, хороший пример, но есть один важный момент, поиск должен осуществляться по всем страницам(они в разных файлах), а не в рамках одной. А как нибудь можно перехватывать результаты поиска? Т.е. скажем перехватывать системные сообщения и, если в результате поиска ничео не найдено, то просто подсовывать ему следующую страницу, чтобы он искал уже по ней. Или может есть другие способы решения? Заранее благодарю за помощь!
0
QenT
40 / 40 / 8
Регистрация: 29.01.2009
Сообщений: 244
13.03.2009, 08:41 5
oxotnik, а для WebBrowser не подскажешь как?
0
oxotnik
1634 / 1107 / 75
Регистрация: 21.08.2008
Сообщений: 4,648
Записей в блоге: 1
Завершенные тесты: 1
13.03.2009, 09:08 6
Цитата Сообщение от QenT Посмотреть сообщение
oxotnik, а для WebBrowser не подскажешь как?
точно также
оба компонента (TCppWebBrowser и TWebBrowser) сделаны на основе интерфейса IWebBrowser
0
QenT
40 / 40 / 8
Регистрация: 29.01.2009
Сообщений: 244
14.03.2009, 01:25 7
Цитата Сообщение от oxotnik Посмотреть сообщение
точно также
оба компонента (TCppWebBrowser и TWebBrowser) сделаны на основе интерфейса IWebBrowser
Я уже пробовал, есть различия, что то подстроить было не сложно, но вот &CGID_IWebBrowser подставить не получилось(
0
14.03.2009, 01:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2009, 01:25

Поиск подстроки
Почему при поиске вхождения подстроки в строку если я ввожу несколько слов, то компилятор разделяет...

Поиск подстроки
Здравствуйте! Нужно проверить такие условия: если подстрока находится в конце строки; если...

Поиск подстроки
Уважаемые форумчане, кодеры, кто может написать мне код на этом примере; Поиск подстрок. Вызов...


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

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

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