|
|
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
JaDiCEF полностью поддерживает querySelectorAll . CEF4Delphi поддерживает внедрение JS в страничку 21954002 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2019, 09:52 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
JaDiЭто же жесть -- вручную перебирать всю структуру DOM. Хорошо. А как получить в свою программу из документа определённый контент, содержимое той или иной ноды? Но без установки доп. расширений в CEF. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2019, 10:24 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
X11JaDiЭто же жесть -- вручную перебирать всю структуру DOM. Хорошо. А как получить в свою программу из документа определённый контент, содержимое той или иной ноды? Но без установки доп. расширений в CEF. Это риторический вопрос в стиле "как из процедуры вернуть результат, не преобразовывая ее в функцию". Хром -- асинхронный. Чтобы что-то из него получить, необходимо дождаться результата. Это можно сделать разными способами -- от eval и extention до вечного while в ожидании появления новых данных в скрытом dom-элементе. См. примеры в "\demos\Delphi_VCL\JavaScript", как там значения возвращаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2019, 11:30 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
Если вы загружаете скрипт из файла в кодировке UTF-8, то не забудьте перед его внедрением в CEF конвертировать в string: Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2019, 12:30 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
Я правильно понимаю, что Код: pascal 1. Создаётся глобально для всей системы, а не только для моей программы и тем более не только для доп. потока(ов) приложения? Я про то, что когда TChromium (PID_BROWSER) и процесс рендерига (PID_RENDERER) обмениваются между собой сообщениями Код: pascal 1. в сообщении нужно конкретизировать как-то - что и кому предназначено? Если в приложении несколько потоков, то нужно в каждом потоке и свой экземпляр TChromium создавать? Или TChromium должен быть общим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2019, 13:06 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
ведь процесс создания браузера запускается из DPR файла, т.е. непосредственно ещё до старта моего приложения Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Получается, что процедура GlobalCEFApp_OnProcessMessageReceived ловит сообщения от всех экземпляров TChromium из разных потоков приложения? Каждый отдельный поток парсит свой отдельный сайт. Нормально ли будет работать браузер? Первый поток Chromium1.LoadURL(...); Загрузка этого сайта даже не завершилась, а тут Второй поток Chromium2.LoadURL(другой сайт); нормально ли завершиться загрузка первого сайта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2019, 13:14 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
Конечно нормально. Там же асинхронное всё, да еще и в своих собственных процессах крутится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2019, 13:31 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
X11Если в приложении несколько потоков, то нужно в каждом потоке и свой экземпляр TChromium создавать? Или TChromium должен быть общим? как правильно? или нет разницы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2019, 13:32 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
Просто я собираюсь использовать Chromium в headless режиме и там не будет TCEFWindowParent. Вот если в приложении несколько вкладок или пользователь сам создает вкладки, как это в классическом браузере, то достаточно одного экземпляра Chromium, как я понимаю? Просто будет вот так: Код: pascal 1. 2. 3. Но у меня-то не будет разных CEFWindowParent. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2019, 13:39 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
CEFWindowParent1 -- это визуальный компонент, где будет идти отрисовка конкретного экземпляра браузера. В соседней же теме было, что для работы в безрендеринговом режиме можно туда nil передавать. Для потоков должен быть свой собственный браузер TChromium.Create ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2019, 14:00 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
JaDiCEFWindowParent1 -- это визуальный компонент, где будет идти отрисовка конкретного экземпляра браузера. В соседней же теме было, что для работы в безрендеринговом режиме можно туда nil передавать. это я всё знаю уже давно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2019, 14:09 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
JaDiДля потоков должен быть свой собственный браузер TChromium.Create Вы не понимаете мои вопросы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2019, 14:09 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
X11Вы не понимаете мои вопросы? Ответ был на это: авторЕсли в приложении несколько потоков, то нужно в каждом потоке и свой экземпляр TChromium создавать? Или TChromium должен быть общим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2019, 14:16 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
Возникла проблема в реальной программе. Программа защищается с помощью ASProtect SKE. Т.е. где-то в какой-то форме, которая создается по кнопке есть использование сторонней dll. Так вот, при инициализации CEF`а происходит исключение (exception). Хотя строка инициализации CEF`а Код: pascal 1. идёт самой первой после begin в dpr. Как обойти проблему? На всякий случай прикреплю код получения HardwareID Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. в aspr_api.pas есть Код: pascal 1. 2. 3. 4. 5. 6. 7. т.е. нужно как-то заставить dll`ку грузиться позже? или.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2019, 10:46 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
В принципе, у меня всё взлетело и парсинг работает в отдельном потоке без окон, т.е. в режиме headless. Осталось решить проблему с загрузкой сторонней dll. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2019, 16:17 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
А как получить скриптом то, что всплывает в окне? Вот мой код, я сделал по принципу, как на других сайтах. Но функция поиска телефона (FindTel) ищет номер в текущем документе, а нужно в новом окне. JS Код: javascript 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. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2019, 17:55 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
Это не окно, а просто див, который так же в структуре document сидит. Просто селектор не рабочий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2019, 18:27 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
т.е. нужно выяснить, что вставить вместо ??? в Код: javascript 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2019, 18:43 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
нашёл div.sc-iwsKbI.kiAeTp a ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2019, 18:52 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
А как получить полностью всю страничку как она есть? Потому что document.Body.AsMarkup возвращает только часть html-странички. т.е. приходится клеить document.Head.AsMarkup + document.Body.AsMarkup ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2019, 12:16 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
Странно, сохранил страничку в текст. А она в кодировке ANSI. Так и должно быть? Снимок с виндового Блокнота: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2019, 13:14 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
А кто-нибудь пробовал нажать программно на гугловскую рекапчу? Обойти её... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2019, 23:25 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
Подозреваю, если бы это было так просто, то в ней не было бы никакого смысла)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2019, 10:02 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
Я не про распознавание картинки. Иногда рекапча не показывает картинок, нужно просто кликнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2019, 10:18 |
|
||
|
CEF4Delphi в потоке с внешней формой
|
|||
|---|---|---|---|
|
#18+
Так а в чем проблема-то? Находишь ДОМ элемент, кликаешь. Только опять же, она не просто так не показывает картинки. Иначе это была бы не каптча. Насколько я знаю, она анализирует действия юзера на страничке, и если он похож на человека, то картинки не показываются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2019, 13:55 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39856067&tid=2038489]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
141ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 507ms |

| 0 / 0 |
