powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Chromium cef3 в отдельном потоке
81 сообщений из 81, показаны все 4 страниц
Chromium cef3 в отдельном потоке
    #39301896
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению, первую тему www.sql.ru/forum/1229066/chromium-cef3 зафлудили. Ладно, оставим её, как флудильню. Любит наш народ )))

В общем, вопрос такой.
Как правильно получить в отдельном потоке внутренний HTML код станиц в цикле?

Т.е. примерно так:
- загружаем первую страницу по первой ссылке;
- ждём пока загрузится;
- получаем внутренний HTML;
- из HTML получаем нужные ссылки;
- в цикле по этим ссылкам нужно получить другие страницы.

Всё в синхронном режиме.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39301912
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты забыл про скрипты написать.

Если страница статическая - то ты её просто скачиваешь любой файло-качалкой и браузер тут не нужен вообще.

А вот если с сервера приходит какая-то заготовка и только потом страничка сама начинает создавать себя уже на клиенте, то какой-нибудь TJvURLGrabber уже впрямую не применим.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39301928
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет.
Там почти голая страница + javascript и куча запросов к серверу
Я уже писал. Я не хочу изучать javascript, анализировать исходный код страниц. Не хочу изобретать велосипед.

Мне нужно лишь получать готовый HTML в синхронном режиме в цикле по ссылкам.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39301935
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
X11Нет.
Там почти голая страница + javascript и куча запросов к серверу
Я уже писал. Я не хочу изучать javascript, анализировать исходный код страниц. Не хочу изобретать велосипед.

Мне нужно лишь получать готовый HTML в синхронном режиме в цикле по ссылкам.

подозреваю, что dcef, как и IE, не поддерживает синхронный режим.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39301946
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorподозреваю, что dcef, как и IE, не поддерживает синхронный режим.
возможно, но там есть
CefSingleProcess : boolean
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39301949
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11, так а что мешает работать по схеме navigate - oncomplete?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39301951
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
X11defecatorподозреваю, что dcef, как и IE, не поддерживает синхронный режим.
возможно, но там есть
CefSingleProcess : boolean
Скорее, это похоже на то, что движок не будет создавать доп. процессы, а всё будет в одном.
И это не говорит за синхронность
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39301963
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57X11, так а что мешает работать по схеме navigate - oncomplete?

пытаюсь её использовать, но пока не знаю, как правильней
нужно же как-то "ждать"

к примеру, есть 50 ссылок, которые нужно скачать каждую по очереди, а не как получится
см. 1ое сообщение:
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39301965
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11нужно же как-то "ждать"ну так флагом. Как же еще?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39301986
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11к примеру, есть 50 ссылок, которые нужно скачать каждую по очереди, а не как получится
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ReadLinks(List);
Navigate(List[0]);

procedure OnComplete()
begin
  ShowMessage('Loaded ' + List[0]);
  List.Delete(0);
  if List.Count > 0 then
    Navigate(List[0]);
end;
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302018
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и к серверу будет сразу 50 обращений - так нельзя
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302043
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11и к серверу будет сразу 50 обращений - так нельзяпочему сразу?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302056
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но ссылки же надо в цикле выполнить, по очереди, т.е. не загружать вторую, пока первая не загрузится полностью и из неё нельзя будет извлечь и обработать html

а если запустить цикл
Код: pascal
1.
2.
for i := 0 to count
  Chromium1.Load(StringList1[i]);



то цикл запустит первую ссылку, а не дожидаясь её загрузки, сразу начнёт загружать вторую, и т.д.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302063
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11и к серверу будет сразу 50 обращенийС какого перепугу?
X11но ссылки же надо в цикле выполнить, по очереди, т.е. не загружать вторую, пока первая не загрузится полностью и из неё нельзя будет извлечь и обработать htmlНу и где здесь 19617576 нарушается это условие?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302065
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11, так Vasilisk же привел тебе пример кода. Где там "сразу"?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302071
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уже плохо к вечеру соображаю %)
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302283
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TChromium не хочет работать без окна в потоке :(
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302598
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11TChromium не хочет работать без окна в потоке :(AllocateWnd + MessageQueue
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302615
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мало того, TChromium при Load создаёт ещё три окна зачем-то.
Я пока остановлюсь на TWebBrowser. TWebBrowser в потоке не чудовищно себя ведёт.


http://stackoverflow.com/questions/23181286/how-to-initialize-chromium-embedded-framework-3-in-another-thread
Because DCEF3 has this absolutely stupid multi process architecture.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302716
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_X11к примеру, есть 50 ссылок, которые нужно скачать каждую по очереди, а не как получится
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ReadLinks(List);
Navigate(List[0]);

procedure OnComplete()
begin
  ShowMessage('Loaded ' + List[0]);
  List.Delete(0);
  if List.Count > 0 then
    Navigate(List[0]);
end;



сделаю несколько процедур OnComplete и буду по очереди подключать, т.к. скачивать приходится разное
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302813
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

задача, которую ты пытаешься сделать не такая простая, как кажется. стабильно отловить конец загрузки + рендер, да еще и в доп потоке - не так просто. но - пробуй, расскажешь )
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302822
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, в потоке веб браузер без окна работать не хочет

изучаю
http://prog-example.ru/twebbrowser/nevidimyj-brauzer-twebbrowser-v-potoke/

пока затык на строке
Command.ResultCallback := @ResultCallback;

[dcc32 Error] Variable required
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302824
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,

Причем задача нерешаемая в принципе. Там на странице динамические запросы запускаются так же асинхронно, и поймать их можно, лишь внедрив свой джаваскрипт к тем событиям или отлавливая определенные изменения в DOMе.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302825
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Delphi XE3 пример откомпилировался, браузер работает в потоке.
Пробую адаптировать для своей задачи.

Не для пятницы задача
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302832
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вернуть результат из procedure ResultCallback(text: PWideChar);
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39302839
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Наверно так же. как из из других коллбеков.
например, при работе с EnumWindows
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303051
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если через глобальную переменную и Event+WaitForSingleObject?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303122
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiПричем задача нерешаемая в принципе.

используя пример из этого кода
http://prog-example.ru/twebbrowser/nevidimyj-brauzer-twebbrowser-v-potoke/
получилось реализовать синхронный режим с TWebBrowser, вернее с IWebBrowser2.

объявляю 2 глобальные переменные
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
...
var
    FEvent: THandle;
    sDocumentCompleteResult: string;

implementation

...




Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function TParse.GetDocumentInnerHTML(const url: string): string;
      procedure ResultCallback(text: PWideChar);
      begin
         sDocumentCompleteResult := WideCharToString(text);
         SetEvent( FEvent);
      end;
var
  Command: TWebBrowserCommand;
begin
  Command.Number          := CMD_NAVIGATE;
  Command.Parameter       := PChar(url);
  Command.ResultCallback  := @ResultCallback;

//запускаем navigate
  SendCommandToWebBrowser(FWebBrowserContainer1, @Command);

//ждём
  WaitForSingleObject(FEvent, INFINITE);// вместо INFINITE можно вставить интервал времени ожидания, на случай зависания - timeout

  result := sDocumentCompleteResult;
  CloseHandle(FEvent);
end;





и вот так используем
Код: pascal
1.
2.
    FEvent := CreateEvent(nil, false, false, nil);
    pagecontent := GetDocumentInnerHTML(url);
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303144
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, вот, что выдаёт невидимый браузер
Не удается отобразить эту страницу
Убедитесь, что веб-адрес http://h правильный.
Найдите страницу с помощью поисковой системы.
Обновите страницу через несколько минут.

где-то я ошибся
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303148
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя сам пример работает номрально
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303153
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно вот так в юникодной версии Delphi:
Код: pascal
1.
  Command.Parameter :=   Command.Parameter := PAnsiChar(AnsiString(sURL));
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303157
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
невидимый браузер выдаёт видимые сообщения

типа


хотя если открыть ссылку непосредственно в Internet Explorer, то никаких ошибок и сообщений нет

поэтому нужно добавить где-нибудь
Код: pascal
1.
Container^.WebBrowser.Silent := True;
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303159
Фотография Lexus34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а что мешает создать отдельный юнит TThread заюзать глобальную переменную GET запроса и копить в стриноговом буфере (или какой там тип данных), потом обрабатывать если надо что там за выхлоп. Вот проблема ппц.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303319
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11невидимый браузер выдаёт видимые сообщения

типа


хотя если открыть ссылку непосредственно в Internet Explorer, то никаких ошибок и сообщений нет

поэтому нужно добавить где-нибудь
Код: pascal
1.
Container^.WebBrowser.Silent := True;



Hint: Internet Explorer и TWebbrowser - немного разные программы, точнее - разные интерфейсы одной программы. Поэтому то, что работает в IE совсем не обязательно будет нормально работать в WebBrowser.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303320
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понял
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303336
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

WebBrowser по умолчанию запускается в режиме совместимости с IE 7, в то время как Internet Explorer - Edge, те последняя доступная версия
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303339
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок, а как дать понять браузеру WebBrowser, чтобы он запускался в "нормальном" режиме?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303372
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303429
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius,

ага, понял
добавил свою программу - всё равно вываливается Ошибка сценария
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303430
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поспешил )))
всё ок, уже нет сообщений об ошибках
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303471
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё прошу помочь с этой процедурой.
этот пример
http://prog-example.ru/twebbrowser/nevidimyj-brauzer-twebbrowser-v-potoke/
скорее всего написан для неюникодной версии Delphi, поэтому он не на 100% рабочий


Вот, например, процедура:
Код: pascal
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.
function MsgOnlyWindowProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
  Container: PWebBrowserContainer;
  Command: PWebBrowserCommand;
begin
  case uMsg of
    WM_USER:
    begin
      Container := PWebBrowserContainer(wParam);
      Command   := PWebBrowserCommand(lParam);

      case Command^.Number of
        CMD_NAVIGATE:
        begin
//          Container^.WebBrowser.Silent := True;
          Container^.WebBrowser.Navigate(PAnsiChar(Command^.Parameter), EmptyParam, EmptyParam, EmptyParam, EmptyParam);
          while (Container^.WebBrowser.ReadyState <> READYSTATE_COMPLETE) do
          begin
            Application.ProcessMessages;
            Sleep(1);
          end;
          Command^.ResultCallback(PWideChar((Container^.WebBrowser.Document as IHTMLDocument2).body.outerHTML));
        end;

      end;
    end;
  else
    Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
    Exit;
  end;
  Result := 1;
end;



Первый параметр в Navigate должен быть не PAnsiChar, а PWideChar. Поэтому Delphi выдаёт warning, но работает.
А если передавать PWideChar, то вываливается EOleException "Неизвестная ошибка".
Так вот, как правильно переписать эту строку?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303473
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такой Warning:
Implicit string cast from 'AnsiChar' to 'WideString'

переделал так:
Код: pascal
1.
Container^.WebBrowser.Navigate(WideString(PAnsiChar(Command^.Parameter)), EmptyParam, EmptyParam, EmptyParam, EmptyParam);
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303474
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и Event log внизу часто выдаёт:
Event logDebug Output:
Invalid parameter passed to C runtime function.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303628
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Код: pascal
1.
2.
3.
Command.Parameter := PWideChar('http://ya.ru');
..
Container^.WebBrowser.Navigate(PWideChar(Command^.Parameter), EmptyParam, EmptyParam, EmptyParam, EmptyParam);


?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303669
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то же самое - неопознанная ошибка
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303684
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё проблема в том, что в этом месте код виснет

Код: pascal
1.
2.
3.
4.
5.
          while (Container^.WebBrowser.ReadyState <> READYSTATE_COMPLETE) do
          begin
            Application.ProcessMessages;
            Sleep(1);
          end;



т.к. ReadyState не возвращает READYSTATE_COMPLETE очень долгое время
скорее всего из-за того, что WebBrowser считает, что страничка загружена не до конца
нужно мастырить какой-то timeout

Может быть виснет из-за того, что какой-то ActiveX объект не загрузился или JS не выполнился.
Хотя если открывать тот же самый URL непосредственно в IE 11, то страница ( основная часть, шаблон) грузится быстро, 2-3 сек, после чего начинается выполнение внутреннего JS и страница наполняется контентом, но тоже быстро. И нет такого, что индикатор загрузки постоянно или очень долго крутится.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303694
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

было такое, когда веббраузер не отображался, пока не покажешь его - состояние не менялось... пришлось переделать работу на после показа...
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303703
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius,

не понял..
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303713
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11не понял..
Говорит, пока не покажешь браузер (не дашь ему прорисоваться), состояние не меняется.
Zeliusпока не покажешь его - состояние не менялось...
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303714
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

пришлось перенести обработку страницы из OnCreate формы на показ и определение State = READYSTATE_COMPLETE по таймеру
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303716
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeliusX11,

Код: pascal
1.
2.
3.
Command.Parameter := PWideChar('http://ya.ru');
..
Container^.WebBrowser.Navigate(PWideChar(Command^.Parameter), EmptyParam, EmptyParam, EmptyParam, EmptyParam);



?

я немного ошибся и передалал
Код: pascal
1.
Command.Parameter := PWideChar(url);


...

Код: pascal
1.
Container^.WebBrowser.Navigate(PWideChar(Command^.Parameter), EmptyParam, EmptyParam, EmptyParam, EmptyParam);




ошибки нет, но получаю кракозыбры
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303720
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanX11не понял..
Говорит, пока не покажешь браузер (не дашь ему прорисоваться), состояние не меняется.
Zeliusпока не покажешь его - состояние не менялось...

так он же рисуется в невидимом окне
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303722
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11так он же рисуется в невидимом окне
Это как? Рисуется invisible окно?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303726
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

А зачем тебе эти игры с Parameter: Pointer, ты же сообщение синхронно посылаешь, сделай сразу Parameter: String
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303727
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius,

а почему сразу в этом примере не сделали?
http://prog-example.ru/twebbrowser/nevidimyj-brauzer-twebbrowser-v-potoke/
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303730
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока нормально работает так:
Код: pascal
1.
Command.Parameter := PAnsiChar(AnsiString(url));



без AnsiString в браузер прилетает только 1 символ "h"
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303734
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Откуда ж я знаю, другие времена, другая дельфи, другие цели, криворукость... Вот этот код сильно пахнет
Код: pascal
1.
   Command.Parameter := PAnsiChar('http://ya.ru');


Нельзя так делать, никто не гарантирует, что эта память не затрется в момент использования этого указателя.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303735
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius,

ок, а как надо делать?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303737
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeliusНельзя так делать, никто не гарантирует, что эта память не затрется в момент использования этого указателя.
Тут-то как раз нормально, это константа.
Но в рабочей программе вряд-ли отправляется константа...
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303743
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

так написал же, используй сразу Parameter: String
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303758
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zeliusтак написал же, используй сразу Parameter: String
Что-то нужно подправить в консерватории: константы смущают, что могут затереться, а переменные - не могут?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303767
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

с чего вдруг затрется переменная при синхронном SendMessage? Про константу да, я погорячился...
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39303885
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут получает многовато для преобразований, чтобы было без Warning`ов
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
var
...
  s: string;
  w: WideString;
begin
...
          s := String(PAnsiChar(Command^.Parameter));
          w := WideString(s);
          Container^.WebBrowser.Navigate(w, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39327038
vitc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Совет для X11: не используйте последние (2704+) win32 билды, они кривые. Используйте под Win64.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39327060
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitcСовет для X11: не используйте последние (2704+) win32 билды, они кривые. Используйте под Win64.

не понял
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39327062
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С Internet Explorer тоже проблемы на Win7.
И, похоже, только на Win 7 x86.
Вы об этом?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39327072
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitc, в чем же кривизна?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39327081
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На Windows 7 я не могу открыть нормально https://dom.ria.com/ - объявления не отображаются
даже если IE актуальной версии
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39327984
vitc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11, у меня рендеринг кривой получается в последних 32-битных версиях. Полосы какие-то отображаются. Ошибки вялятся. Для 64-битных - все ok.

Ссылки, где брал:

CEF3 binary: http://opensource.spotify.com/cefbuilds/index.html
Качаешь, например, cef_binary_3.2704.1432.g60b3718_windows64_client.tar.bz2 и вытаскиваешь оттуда dll-ки, pak-и, bin-ы.

Обновление сырцов для версии 3.2704 тут: https://github.com/felipedaragon/dcef-archive/tree/master/src/dcef_v3_2704
Со сторыми сырцами новые билды cef3 не дружат - нарушена обратная совместимость. Сравни, например, интерфейс ICefRequest в версии 3.2704 и в "оригинальной" 3.2454 (отсюда: https://github.com/hgourvest/dcef3) - посередине (!) интерфейса засунули новые методы (SetReferrer, GetReferrerUrl, GetReferrerPolicy). И таких мест много.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39328000
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitcСо сторыми сырцами новые билды cef3 не дружатну так еще бы)) что мешает скачать обновленные заголовочные файлы для 2704 с исходного сайта https://github.com/hgourvest/dcef3 ?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39328011
vitc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fd00ch, там старая версия (3.2454, updated 6 months ago). или я ослеп и чего-то не вижу?
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39328022
vitc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fd00ch, нашел. там в точности то же самое, что я использую: https://github.com/felipedaragon/dcef-archive/tree/master/src/dcef_v3_2704
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39328043
vitc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fd00ch, О!!! Там нормальные dll-ки для Win32! Теперь все работает. Спасибо!
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39328058
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitc,

дело в том, что мне нужен и я использую невидимый браузер, т.е. в отдельном потоке
нужно тянуть объявления, без JS не получается
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39328094
vitc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11. посмотри реализацию cefclient. я делаю видимый. вернее, несколько броузеров видимых, каждый в своем табе, каждый таб "обслуживает" свой поток. CefSingleProcess := False, т.е. мульти-процессный режим, так imho стабильнее.
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39328121
vitc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11, точнее без CefSingleProcess := False работать из нескольких потоков вообще не получается
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39328127
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я уже на IE сделал
с хромиумом облом
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39328133
vitc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11, c IE другая проблема - нельзя прокси для каждого потока свой сделать ;)
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39328135
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, проблема...
ну что ж
IE хотя бы работает в потоке без окна
вернее с виртуальным невидимым окном
...
Рейтинг: 0 / 0
Chromium cef3 в отдельном потоке
    #39328149
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitcX11, c IE другая проблема - нельзя прокси для каждого потока свой сделать ;)
можно вынести поток с IE в отдельный процесс...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Chromium cef3 в отдельном потоке
    #39840012
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
while (Container^.WebBrowser.ReadyState <> READYSTATE_COMPLETE)



ReadyState возвращает всё время 1, т.е.
secureLockIconMixed - There are multiple security encryption methods present.
вместо 4
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa768364(v=vs.85)


в итоге процесс скачивания тупо подвисает
...
Рейтинг: 0 / 0
81 сообщений из 81, показаны все 4 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Chromium cef3 в отдельном потоке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]