Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 113

Поиск нужного текста в компоненте CppWebBrowser

03.01.2015, 02:09. Показов 1968. Ответов 5
Метки нет (Все метки)

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

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure WBFindText(Browser:TWebBrowser; const Direction: Boolean;
const FText: String;   const SearchScope, Flags: Integer); 
var Doc: IHTMLDocument2;   SelObj:
IHTMLSelectionObject;   SelRange:
IHtmlTxtRange;
 begin
Doc := Browser.Document as IHTMLDocument2; 
 SelObj :=Doc.Selection;  
SelRange :=SelObj.CreateRange as IHTMLTxtRange;
 
  SelRange.Collapse(Direction);
 
  if SelRange.FindText(FText, SearchScope, Flags) then   begin
    SelRange.Select;
    SelRange.ScrollIntoView(True);   end
    else MessageBox(Handle, 'По Вашему запросу ничего не найдено', 'Поиск
 текста', MB_ICONINFORMATION);
end;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.01.2015, 02:09
Ответы с готовыми решениями:

Поиск подстроки на странице в CppWebBrowser
Доброе время суток. Подскажите пожалуйста как можно реализовать поиск подстроки в тексте страницы, загруженной в CppWebBrowser, и если...

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

Поиск нужного слова в мемо
Нужно решить такую проблему как поиск слова в мемо. Пробовал перевести код с делфи procedure TForm1.Button1Click(Sender: TObject); ...

5
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,879
Записей в блоге: 12
03.01.2015, 12:47
Лучший ответ Сообщение было отмечено BRcr как решение

Решение

Зачем тебе это? Вызови стандартный диалог поиска:
C++
1
2
3
4
#include <Shdocvw.hpp>
// ...
    CppWebBrowser1->ExecWB(Shdocvw_tlb::OLECMDID::OLECMDID_FIND,
        Shdocvw_tlb::OLECMDEXECOPT::OLECMDEXECOPT_PROMPTUSER);
, и пусть Browser сам занимается своей работой...
3
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 113
03.01.2015, 14:21  [ТС]
Я бы с радостью использовал бы простой способ, но что-то простотой и не пахнет..
Сдалал на форме кнопочку, подключил библиотеку, прописал кнопочке код вышеуказанный.
и вот какие ошибки посыпались:
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
[C++ Error] Shdocvw.hpp(893): E2293 ) expected
[C++ Error] Shdocvw.hpp(896): E2040 Declaration terminated incorrectly
[C++ Error] Shdocvw.hpp(896): E2190 Unexpected }
[C++ Error] Shdocvw.hpp(905): E2139 Declaration missing ;
[C++ Error] Shdocvw.hpp(906): E2238 Multiple declaration for 'CoInternetExplorer::_di_IWebBrowser2'
[C++ Error] Shdocvw.hpp(905): E2344 Earlier declaration of 'CoInternetExplorer::_di_IWebBrowser2'
[C++ Error] Shdocvw.hpp(906): E2139 Declaration missing ;
[C++ Error] Shdocvw.hpp(972): E2303 Type name expected
[C++ Error] Shdocvw.hpp(972): E2139 Declaration missing ;
[C++ Error] Shdocvw.hpp(973): E2303 Type name expected
[C++ Error] Shdocvw.hpp(973): E2238 Multiple declaration for 'TInternetExplorer::_di_IWebBrowser2'
[C++ Error] Shdocvw.hpp(972): E2344 Earlier declaration of 'TInternetExplorer::_di_IWebBrowser2'
[C++ Error] Shdocvw.hpp(973): E2139 Declaration missing ;
[C++ Error] Shdocvw.hpp(1031): E2293 ) expected
[C++ Error] Shdocvw.hpp(1062): E2238 Multiple declaration for 'TInternetExplorer::_di_IWebBrowser2'
[C++ Error] Shdocvw.hpp(973): E2344 Earlier declaration of 'TInternetExplorer::_di_IWebBrowser2'
[C++ Error] Shdocvw.hpp(1062): E2303 Type name expected
[C++ Error] Shdocvw.hpp(1062): E2139 Declaration missing ;
[C++ Error] Shdocvw.hpp(1123): E2139 Declaration missing ;
[C++ Error] Shdocvw.hpp(1124): E2238 Multiple declaration for 'CoShellBrowserWindow::_di_IWebBrowser2'
[C++ Error] Shdocvw.hpp(1123): E2344 Earlier declaration of 'CoShellBrowserWindow::_di_IWebBrowser2'
[C++ Error] Shdocvw.hpp(1124): E2139 Declaration missing ;
[C++ Error] Shdocvw.hpp(1142): E2139 Declaration missing ;
[C++ Error] Shdocvw.hpp(1143): E2238 Multiple declaration for 'CoShellWindows::_di_IShellWindows'
[C++ Error] Shdocvw.hpp(1142): E2344 Earlier declaration of 'CoShellWindows::_di_IShellWindows'
[C++ Error] Shdocvw.hpp(1142): E2228 Too many error or warning messages
ругается на фаил Shdocvw.hpp, что не так-то? Может есть реальный рабочий пример? Или у меня что-то с билдером...

Добавлено через 59 минут
Благадарю, разобрался
Использовал такую конструкцию
C++
1
CppWebBrowser1->ExecWB(Shdocvw_tlb::OLECMDID_FIND,Shdocvw_tlb::OLECMDEXECOPT_PROMPTUSER);
Shdocvw.hpp не подключал, все работает
0
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 113
15.01.2015, 10:04  [ТС]
В общем заметил такую неприятную вещь, как то что функция
C++
1
CppWebBrowser1->ExecWB(Shdocvw_tlb::OLECMDID_FIND,Shdocvw_tlb::OLECMDEXECOPT_PROMPTUSER);
на некоторых компьютерах работает как положено, а вот на других под управлением winXP вместо стандартного поиска в компаненте CppWebBrowser1, вызывается диалоговое окно поиска виндовс как по клавише Ctrl+F

как это обойти? Мне нужно что бы поиск проходил именно в компаненте CppWebBrowser1, и не вызывались ни какие другие апи.. Это возможно?

Добавлено через 17 часов 13 минут
разобрался в чем ошибка именно на этих компах функция QueryStatusWB:

C++
1
 bool s = CppWebBrowser1->QueryStatusWB(OLECMDID_FIND);
Возвращает false... Как вручную сделать так, чтобы было тут-> OLECMDID_FIND true?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,879
Записей в блоге: 12
15.01.2015, 10:38
Цитата Сообщение от TexHuK Посмотреть сообщение
Как вручную сделать так
Не с тем разбираешься. Если QueryStatusWB вернул 0 - значит интерфейс в твоей версии IE еще не поддерживается, не пытайся подделать ответ QueryStatusWB, от этого ExecWB работать лучше не станет. И не надо записывать результат в bool, делай как положено:
C++
1
2
3
4
5
    Shdocvw::OLECMDF ret = CppWebBrowser1->QueryStatusWB(Shdocvw::OLECMDID_FIND);
    if(ret == Shdocvw::OLECMDF_SUPPORTED | Shdocvw::OLECMDF_ENABLED)
    {
        // все в порядке, можно вызывать
    }
Там, где условие не срабатывает, скорее всего надо просто обновить версию IE... Или пользоваться тем, что есть.
1
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 113
15.01.2015, 18:06  [ТС]
Да, действительно IE был старой версии где-то на подсознательном уровне я это понимал Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.01.2015, 18:06
Помогаю со студенческими работами здесь

Как организовать поиск нужного сочетания символов в строке?
Пишу парсер для собственных нужд. Нужно из http страницы получить нужные ссылки. &lt;div class=&quot;b-customers__letter&quot;&gt; ...

Посоветуйте пожалуйста! Как мне в компоненте ComboBox2 Организовать смену шрифтов в компоненте Memo1?
Всем заранее спасибо!!!!!!! void __fastcall TForm1::ComboBox2Change(TObject *Sender) { }

Поиск нужного текста в диопазоне
Здравствуйте! Подскажите как сделать так, чтобы суммировались значения в выбранном столбце (столбец &quot;I&quot;, из примера) из ячекек...

Организовать поиск текста в компоненте RichEdt
procedure TForm3.FindDialog1Find(Sender: TObject); begin with FindDialog1 do begin if frMatchCase in Options then...

Моментальный поиск текста, нужного для правки на своем сайте
Всем привет. Сразу оговорюсь, в этом деле новичок, по этому полный профан в этом. Надеюсь на вашу помощь. Есть свой сайт,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru