fpCEF3

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

Модератор: Модераторы

Re: fpCEF3

Сообщение jsa » 07.09.2019 07:32:34

Спасибо. Я с этой страницы и начинал. Но не обратил внимания какая там версия указана,
Скачал cef_binary_3.3029.1619.geeeb5d7_windows32_client
работает.
Даже получилось зайти на web.whatsapp.com и подключиться.
Что странно так как мой клиент для Linux тоже работающий через Chromium одно время отказывался , пришлось ему юзерагента сменить на Chrome, только тогда заработал.
А тут работает без проблем, через Chromium да еще старой версии.

А вот Skype отказывается , требует Chrome
отсюда вопрос.
1. Как можно сменить юзер-агента у такого браузера?
и второй , об удобстве
2. Как можно поменять расположение файлов браузера?, в папке проекта всё это сваливать зело не удобно.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: fpCEF3

Сообщение Снег Север » 07.09.2019 11:15:20

jsa писал(а):1. Как можно сменить юзер-агента у такого браузера?

вот пример из делфи (из реальной программы):
Код: Выделить всё
program test;

uses
  Forms,
  ceflib,
  ceffilescheme,
  MainForm in 'MainForm.pas' {Form1},
  sendmail in 'sendmail.pas' {SendMailForm};

{$R *.res}

procedure RegisterSchemes(const registrar: ICefSchemeRegistrar);
begin
  registrar.AddCustomScheme('local', True, True, False);
end;

begin
  CefCache := 'cache';
  CefUserAgent := 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36';
//  CefUserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36';
  CefOnRegisterCustomSchemes := RegisterSchemes;
  CefSingleProcess := False;
  if not CefLoadLibDefault then  // If we don't use this 2 lines (2 LINES!!!) then will be AV on close
    Exit;
  CefRegisterSchemeHandlerFactory('local', '', False, TFileScheme);

  Application.Initialize;
  Application.MainFormOnTaskbar := false;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TSendMailForm, SendMailForm);
  Application.ShowMainForm := false;
  Application.Run;
end.


jsa писал(а):2. Как можно поменять расположение файлов браузера?

В винде обязательно должны лежать рядом с исполняемым файлом, в линуксах не знаю.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: fpCEF3

Сообщение jsa » 07.09.2019 15:18:01

1. Спасибо за наводку.
Но модули ceflib, ceffilescheme, почему-то не подключаются
погуглил про них, и наткнулся на такой еще совет
Код: Выделить всё

в идеале в initialization(или просто перед созданием экземпляра если создаётся динамически) модуля с формой где ваш chromium присвоить переменной CefUserAgent необходимый юзерагент, например:
initialization
CefUserAgent:='Windows / IE 11: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko';
end.

Так и не понял про какой initialization идет речь.
поэтому сделал проще.
открыл файл cef3lib.pas который лежит в папке компоненты, и почему то на уровень выше файла cef3.lpk
нашел там строку
CefUserAgent: ustring = ''
и просто вписал туда юзер агента который взял из текущего Хрома (команда chrome://version)
И переустановил компоненту.

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

Таким же образом прописал язык браузера по умолчанию в строке
CefAcceptLanguageList: ustring = '; - прописал ru

2. Думаю есть возможность и путь к файлам браузера указать так как в cef3lib.pas есть строки
CefBrowserSubprocessPath: ustring = '';
CefFrameworkDirPath: ustring = '';
CefCachePath: ustring = '';
CefUserDataPath: ustring = '';
CefLocale: ustring = '';
CefLogFile: ustring = '';
CefResourcesDirPath: ustring = '';
CefLocalesDirPath: ustring = '';
Надо только разобраться в какую строку нужно прописать путь './chromium'
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: fpCEF3

Сообщение Снег Север » 07.09.2019 16:25:47

jsa писал(а):Так и не понял про какой initialization идет речь

Секция initialization модуля, разумеется. Смысл - присвоение должно быть ДО создания экземпляра компонента.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: fpCEF3

Сообщение jsa » 08.09.2019 11:54:06

Чудесато, При программном создании экземпляра компоненты, моя программа запускается повторно.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: fpCEF3

Сообщение jsa » 09.09.2019 15:31:45

Моя программа должна работать как при наличии файлов браузера Chromium в папке так и без него.
Определять наличие или включать/выключать опцию через ini файл не является вопросом.
Но, наблюдается такой эффект.

1. Компонент TChromium на форме + файлы в папке - нет проблем.
2. Компонент TChromium на форме + файлов НЕТ в папке - сообщение об ошибке при инициализации формы
3. Компонент TChromium создается программно + файлы в папке - запускается копия моей программы и в ней создается браузер, в оригинальном нет. Причем работает странно, на панели то 1 программа то 2, а в памяти обычно 3 процесса.
4. Компонент TChromium на форме + файлов НЕТ в папке + Cromium.Visible=false - ошибки нет. Но при включение Visible=true ожидаемая ошибка как в п.1.
5. Компонент TChromium на форме + файлов в папке + Cromium.Visible=false. При включении Visible=true создается копия программы как в п.3.
6. Остановился на таком варианте.
Компонент TChromium на форме + файлов в папке + Cromium.Visible=true
В событии onCreate формы на которой расположена компонента я выключаю ее Visible=false если файлы отсутствуют, тогда все работает без проблем.
Т.е. нет ошибки об отсутствии файлов, и не создаются клоны основной программы если файлы есть и Visible оставить true.

Понимаю что это связано как с режимом открытия ссылок в новом окне браузера. Но сколько ни гуглил, не нашел толковых объяснений как с этим работать.
Кто-нибудь создавал динамически компоненту на форме?
Мне понадобится несколько табов делать и не разобравшись в этим не получится продвинуться.

P.S. я пробовал метод в обработкой события onBeforePopup и в нем Result:=true или false
не помогает, вообще оно скорее всего о всплывающих сообщениях.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: fpCEF3

Сообщение jsa » 24.09.2019 16:23:07

Народ! Есть у кого рецепт как побороть повторное открытие программы, при динамическом создании компоненты TChromium , или при установке Chromium1.Visible:=true; ???
Подскажите пожалуйста!

P.S. способ c обработкой события onBeforePopup и в нем Result:=true не работает.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: fpCEF3

Сообщение Снег Север » 24.09.2019 17:16:52

Откомпилировал стандартный пример guitest из fpCEF3-master. Добавил кнопку, которая делает Chromium1.Visible:=true и наоборот. Никаких повторных открываний программы не наблюдаю.
Лазарь 2.0.4, Windows 10 х64.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: fpCEF3

Сообщение jsa » 24.09.2019 17:36:37

пример guitest из fpCEF3-master
это что за пакет? у меня fpCEF3-3.3029
там нет такого

Добавлено спустя 17 минут 51 секунду:
Снег Север писал(а):Откомпилировал стандартный пример guitest из fpCEF3-master. Добавил кнопку, которая делает Chromium1.Visible:=true и наоборот. Никаких повторных открываний программы не наблюдаю.
Лазарь 2.0.4, Windows 10 х64.


попробовал на своем примере, тоже видимо-невидимо работает без проблем.
Поставь в свойствах Chromium1.Visible:=false в инспекторе объектов. И тогда увидишь эффект.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: fpCEF3

Сообщение Снег Север » 24.09.2019 21:30:35

jsa, да, действительно, получил этот баг в fpCEF3. На делфи в dcef3 его нет, так что что-то криво в этом коде.
Попробуйте еще CEF4Delphi - там есть и поддержка Лазаря: - https://github.com/salvadordf/CEF4Delphi
У меня на примере SimpleBrowser баг в таком варианте не появился.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: fpCEF3

Сообщение jsa » 25.09.2019 04:53:54

спасибо попробую
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: fpCEF3

Сообщение jsa » 20.04.2020 09:24:06

Добрался. Скачал CEF4Delphi-master версии 81.2.17 к которому есть сборка 32х битного CEF cef_binary_81.2.17+gb382c62+chromium-81.0.4044.113_windows32.tar.bz2
Попробовал demo проекты, вроде работает.
Включение и выключение в зависимости от параметра опробую и напишу.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Пред.

Вернуться в Сторонние средства

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru