Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30

TChromium получение содержимого фрейма

03.11.2013, 19:43. Показов 5037. Ответов 21

Студворк — интернет-сервис помощи студентам
Есть такая тема в разделе Dephi Как получить текст HTML страницы с компонента Chromium браузер
Там решилась проблема заданием колбека, но если переводить в С++Builder, во первых ругается на константность

[bcc32 Error] UMain.cpp(141): E2522 Non-const function _fastcall ICefFrame::IsMain() called for const object
Full parser context
UMain.cpp(133): parsing: void _fastcall TMainForm::Chromium1BeforeResourceLoad(T Object *,const ICefBrowser *,const ICefFrame *,const ICefRequest *,bool)
Что можно списать на кривую авто-генерацию хедеров для С++.
И можно либо подправить хедеры сделав методы константными, либо использовать const_cast<>.

Во вторых - главный вопрос как перевести колбек или создать визитер, ибо такой номер :
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
//---------------------------------------------------------------------------
void __fastcall callback(String AContent)
{
    MainForm->AddInfo("---------------------------------");
    MainForm->AddInfo(AContent);
    MainForm->AddInfo("---------------------------------");
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Chromium1BeforeResourceLoad(TObject *Sender, const ICefBrowser *browser,
                    const ICefFrame *frame, const ICefRequest *request, bool Result)
 
{
    if(frame)
    {
        String FrameUrl= (const_cast<ICefRequest*>(request))->Url;
 
        if(IsRegisterPassportUrl(FrameUrl)) // Ищем нужный фрейм ...
         {
             AddInfo("resource "+FrameUrl);
            (const_cast<ICefFrame*>(frame))->GetSourceProc(&callback); /* !!!! */
         }
    }
}
//---------------------------------------------------------------------------
не проходит :

[bcc32 Error] UMain.cpp(141): E2034 Cannot convert 'void (_fastcall *)(UnicodeString)' to '_di_TCefStringVisitorProc'
Full parser context
UMain.cpp(133): parsing: void _fastcall TMainForm::Chromium1BeforeResourceLoad(T Object *,const ICefBrowser *,const ICefFrame *,const ICefRequest *,bool)
[bcc32 Error] UMain.cpp(141): E2342 Type mismatch in parameter 'proc' (wanted 'const _di_TCefStringVisitorProc', got 'void (_fastcall *)(UnicodeString)')
Full parser context
UMain.cpp(133): parsing: void _fastcall TMainForm::Chromium1BeforeResourceLoad(T Object *,const ICefBrowser *,const ICefFrame *,const ICefRequest *,bool)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.11.2013, 19:43
Ответы с готовыми решениями:

Получение email и обработка содержимого
В общем стоит следующая задача... На некий адрес электронной почты (gmail, yandex, mail, etc...) с некой периодичностью приходят письма. В...

Tchromium-Получение кода с страницы
Всем доброго времени суток, есть одна проблема при получении кода с страницы выбивает ошибку, ломаю голову над этим но не как не решу, кто...

Получение кода страницы TChromium DCEF3
Привет, гуру. Необходимо получать код страницы, загруженной в хромиум, из главного потока приложения и из созданного мной....

21
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.11.2013, 20:07  [ТС]
Актуально!
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
05.04.2017, 21:08
Avazart, извиняюсь если поднимаю старую тему, но тоже понадобилось получить исходный код фрейма. Можете что-нибудь посоветовать ?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.04.2017, 01:00  [ТС]
Лучший ответ Сообщение было отмечено Почтальон как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
//----------------------------------------------------
class TMyStringVisitor
  : public TCppInterfacedObject<TCefStringVisitorProc>
{
   public:
    virtual void __fastcall Invoke(const ustring str)
    {
      String Answer= ParseAnswer(str);
    }
};
//----------------------------------------------------
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//-----------------------------------------------------
void __fastcall TMainForm::Chromium1BeforeResourceLoad(
    TObject *Sender,
    const ICefBrowser *browser,
    const ICefFrame *frame, 
    const ICefRequest *request,
    bool Result)
 
{
  ICefFrame* FrameX= const_cast<ICefFrame*>(frame);
  ICefRequest *RequestX= 
      const_cast<ICefRequest*>(request);
 
   if(FrameX && RequestX)
   {
     if(IsAnswerUrl(RequestX->Url))
     FrameX->GetSourceProc(new TMyStringVisitor);
   }
}
//-------------------------------------------------------
1
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.04.2017, 08:17
Avazart, премного благодарен
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
06.04.2017, 11:32
Avazart, Почтальон, чтоб не использовать постоянно const_cast
Chromium Embedded (dcef) DelphiInterface
1
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.04.2017, 11:35
_Dimon_, у меня почему-то прокатывает такой код в обработчике Chromium при завершении загрузки страницы:
C++
1
frame->GetSourceProc(new TMyStringVisitor);
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.04.2017, 12:35  [ТС]
А зачем вообще сдалось использовать TChromium как я помню он на устаревшем движке вебкита - половина сайтов то ли не открываются то ли отображаются криво?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.04.2017, 12:39
Цитата Сообщение от Avazart Посмотреть сообщение
А зачем вообще сдалось использовать TChromium
Потому что не знаю как в WebBrowser использовать скрипты , да и движок IE не нравится.
Пока еще не попадались сайты, которые Chromium отображал криво
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.04.2017, 13:12  [ТС]
Цитата Сообщение от Почтальон Посмотреть сообщение
Потому что не знаю как в WebBrowser использовать скрипты
Да где то кажется Volvo пример выкладывал.

Цитата Сообщение от Почтальон Посмотреть сообщение
Пока еще не попадались сайты, которые Chromium отображал криво
Попробуй сайт irr.ru открыть ...
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
06.04.2017, 14:00
Цитата Сообщение от Avazart Посмотреть сообщение
Попробуй сайт irr.ru открыть ...
вроде нормально открывается (DCEF3 Branch 2704)
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.04.2017, 15:40
Цитата Сообщение от Avazart Посмотреть сообщение
Попробуй сайт irr.ru открыть ...
Ну да, что-то с ошибкой приложение вывалилось
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
06.04.2017, 15:48
Почтальон, какая версия DCEF ?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.04.2017, 15:58
_Dimon_, да вот помнить бы . В каком-нибудь файле это можно посмотреть ?
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
06.04.2017, 16:00
Почтальон, libcef.dll версия файла или версия продукта
1
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.04.2017, 16:05
Походу версия 2454
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
06.04.2017, 16:15
у меня есть скомпилированный проект с этой версией DCEF3, но и там вышеупомянутый сайт загружается без проблем.
1
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.04.2017, 16:19
_Dimon_, вы внесли немного ясности. Я устанавливал этот компонент через Delphi, может криво встал или еще, что нибудь. У меня мало опыта по работе с Chromium . Главное что могу получить исходный код страницы(фрейма)
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
06.04.2017, 16:27
Цитата Сообщение от Почтальон Посмотреть сообщение
Я устанавливал этот компонент через Delphi, может криво встал или еще, что нибудь.
я все компоненты через делфи устанавливаю

Вот думаю обновится на DCEF3 Branch 2924, даже скачал уже, но никак руки не доходят )))
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.04.2017, 16:30
Цитата Сообщение от _Dimon_ Посмотреть сообщение
Вот думаю обновится
А обновление как происходит? Сначала удаляется компонент, потом ставится заново ? Танцы с бубнами не нужны ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.04.2017, 16:30
Помогаю со студенческими работами здесь

Получение строки из фрейма
помогите разобраться с рег выраженияем... вот есть фрейм &lt;iframe src=&quot;http://vkontakte.ru/video_ext.php? ...

Изменение картинки\содержимого фрейма\видео при выборе пункта меню
Здравствуйте. Подскажите пожалуйста, можно ли, и как, если можно, сделать следующую вещь: Есть меню (хоть простой список), в центре...

Получение currentdocument.document из другого фрейма
День добрый. Подскажите пожалуйста, ситуация такая... Есть фреймсет. Основной фрейм - Content, второстепенный - DeviceList. ...

Получение содержимого папки
Как получить содержимое папки (имена файлов и папок) и записать его в массив String?

Получение содержимого страницы
Доброго времени суток=) То ли по не знанию, то ли уже от клина в голове, столкнулся с проблемой: Необходимо получить содержимое...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru