Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
Буду признателен, тем кто работает с CEF3/CEF4 для Delphi за помощь.

Некоторые сайты используют CloudFlare, поэтому простым IdHTTP не обойтись - нужен более менее полноценный и современный браузер с поддержкой js/ajax. А то встроенный древний IE подвисает 21931836.

Как я уже давно понял, любому браузеру нужна визуальная форма для работы и в потоке без видимой на экране формы он работать не будет.

Поэтому появилась идея вынести загрузку страницы из потока на форму с использованием synchronize. Может быть будет правильнее вместо доступа к форме и браузеру использовать не synchronize, а какие-то другие методы "общения"?
Или вообще реализовать идею без потока. Может хромиум умеет "нажимать" на ссылку как это делает пользователь мышкой?
24 июл 19, 11:50    [21933393]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
Василий 2
Member

Откуда:
Сообщений: 700
Самое универсальное решение - отдельный браузер, запущенный в режиме WebDriver. Софт для внутренних нужд или на распространение?
24 июл 19, 12:03    [21933415]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
На распространиние, правда в "единичном" экземпляре :)


Василий 2
браузер, запущенный в режиме WebDriver

это как? что для этого надо?
24 июл 19, 12:05    [21933419]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
ziv-2014
Member

Откуда:
Сообщений: 401
X11,
В CEF4 можно вызывать любой javascript код, делать инъекции. Загрузил код, вызвал нужные функции.
24 июл 19, 12:13    [21933437]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
Да, читал краткую инфу.
но мне всего-то нужно "пробежаться" по страничкам и получить InnerHTML.
InnerHTML уже понял как получать.
24 июл 19, 12:58    [21933489]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
Василий 2
Member

Откуда:
Сообщений: 700
X11
Василий 2
браузер, запущенный в режиме WebDriver

это как? что для этого надо?

Браузер, WebDriver-драйвер (гы) и обвязка REST интерфейса.
Для Хрома, например, http://chromedriver.chromium.org/downloads
Но если просто нужно тыкнуть мышкой, это оверхед. Действительно попробуй CEF, а если нужна параллельность и с потоками не заладится - можно организовать субпроцессы вместо потоков
24 июл 19, 14:15    [21933569]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
Часто встречается какой-то "Visitor". Что это такое?

function CookieVisitorProc
CookieVisitor
TCefFastCookieVisitor
OnNavigationVisitorResultAvailable
25 июл 19, 13:00    [21934276]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
А есть у кого простой пример работы с куками?
Как задать папку хранения, например?

Т.к. то ,что есть здесь http://parsing-and-i.blogspot.com/2013/01/tchromium-cookies-in-delphi.html
уже устарело
25 июл 19, 13:01    [21934277]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
X11
Как задать папку хранения, например?


GlobalCEFApp.Cache := 

Теперь и кэш, и куки хранятся в общей папке
25 июл 19, 13:25    [21934317]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
Мало того, все настройки нужно выполнять до строки
GlobalCEFApp.StartMainProcess;

см. пример в файле SimpleBrowser2.dpr
25 июл 19, 16:13    [21934573]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
ппц :( это сложнее, чем я ожидал

+ 10 в карму, есть поможете понять, как после загрузки страницы найти определённый текст и ссылку, а потом и "щёлкнуть" по ней
20 авг 19, 12:58    [21953359]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
sql2012
Member

Откуда: РФ
Сообщений: 687
X11
ппц :( это сложнее, чем я ожидал

+ 10 в карму, есть поможете понять, как после загрузки страницы найти определённый текст и ссылку, а потом и "щёлкнуть" по ней


1. исходный текст не получается?
2. в тексте не получается найти нужное?
3. в найденном не получается извлечь href?
4. не получается вызвать загрузку по указанному url?

на каком пункте непонимание?
20 авг 19, 13:54    [21953446]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
Есть примеры процедур SimpleNodeSearch и SimpleDOMIteration в демках. Разбираю их.

Как я понял из примеров и комментариев, нужно использовать OnProcessMessageReceived.
да, я так и делаю:
GlobalCEFApp.OnProcessMessageReceived := GlobalCEFApp_OnProcessMessageReceived;

автор https://www.briskbard.com/forum/viewtopic.php?f=8&t=861&p=3993#p3840
you will need to send messages to the browser process


unit uDOMVisitor
// To send messages from the render process you must use the browser.SendProcessMessage
// procedure with a PID_BROWSER parameter. The browser process receives those messages in
// the TChromium.OnProcessMessageReceived event.


Далее. В качестве параметра в SimpleNodeSearch и в SimpleDOMIteration нужно передать aDocument: ICefDomDocument, т.к. обе процедуры принимают его на вход.
Вот тут и начинаются танцы с бубном.
Событие GlobalCEFApp_OnProcessMessageReceived получает и обрабатывает сообщения.
Я знаю, как послать сообщение:
browser.SendProcessMessage()

Теперь остаётся понять: откуда его правильно посылать?

здесь автор меня запутал
https://www.briskbard.com/forum/viewtopic.php?f=8&t=861&p=3993
то пишет, что нужно:
frame.SendProcessMessage(PID_BROWSER, msg);

а потом, как я вроде бы понял, это неправильно.

После окончательной загрузки страницы ведь это нужно делать? В каком событии?

К сообщению приложен файл. Размер - 3Kb
20 авг 19, 14:13    [21953467]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11154
X11
и в потоке без видимой на экране формы он работать не будет.
Что мешает создать оконный цикл в нужном потоке?
20 авг 19, 15:03    [21953526]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
Да, отсутствие нужных знаний и навыков Картинка с другого сайта.
20 авг 19, 15:19    [21953547]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6227
X11,

Разметка произвольная? Может просто тупо внедрить на страницу свой JS и уже с его помощью искать и "кликать" по ссылкам?
20 авг 19, 15:37    [21953561]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
Может быть, я не знаю.
Я пока ещё даже искать не научился.
20 авг 19, 15:50    [21953574]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 999
Мне казалось бы какой-то пример работы CEF без визуального рендера.
20 авг 19, 16:18    [21953612]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
эммм, что?
20 авг 19, 16:19    [21953615]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
Saller
Member

Откуда: exUSSR
Сообщений: 1135
X11
Может быть, я не знаю.
Я пока ещё даже искать не научился.

var links = document.querySelectorAll('a.forumLink');
if (links) {
    for (var x = 0; x <= links.length; x++) {
        if (links[x]) {
            if (links[x].innerHTML.trim().indexOf('Delphi') != -1) {
                links[x].click();               
            }
        }
    }
}
20 авг 19, 17:06    [21953675]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
это точно для cef4delphi?
20 авг 19, 17:08    [21953678]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
Saller
Member

Откуда: exUSSR
Сообщений: 1135
X11,

Да. Проверял на странице данной темы. Или давай ссылку на сайт, на котором нужно жмякнуть ссылку.
20 авг 19, 17:11    [21953682]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
Gator
Member

Откуда: Москва
Сообщений: 14910
Saller
Или давай ссылку на сайт, на котором нужно жмякнуть ссылку.

Жмакай на сиквел.ру
20 авг 19, 19:46    [21953770]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
так это ж не дельфи-код
20 авг 19, 19:48    [21953771]     Ответить | Цитировать Сообщить модератору
 Re: CEF4Delphi в потоке с внешней формой  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13227
Saller
X11,

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

doska.plus
20 авг 19, 19:49    [21953772]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / Delphi Ответить