Робота з компонентом

У цій статті йтиметься про Chromium під Delphi 7. У принципі теоретично він напевно стане і під Lazarus, особливо стара версія: https://code.google.com/p/delphichromiumembedded/

Качаємо собі на комп, розпаковуємо сюди: c: Program Files (x86) Borland Delphi7 Lib dcef3

Копіюємо всі файли вихідних файлів з c:\Program Files (x86)\Borland\Delphi7\Lib\dcef3\src в c:\Program Files (x86)\Borland\Delphi7\Lib

Відкриваємо через Delphi 7 пакет c:\Program Files (x86)\Borland\Delphi7\Lib\dcef3\packages\DCEF_D7.dpk

Робимо компіляцію, встановлюємо.

Тепер наприкінці списку вкладок з'явиться нова вкладка Chromium.

Закриваємо пакет, зміни не зберігаємо, перезапускаємо Delphi.

Робота з компонентом

Створимо новий проект, назвемо його допустимо DelphiBrowser.

Спробуємо завантажити сторінку ВК.

На формі розміщуємо компонент TChromium та кнопку TBitBtn, вішаємо подію на кнопку

У uses перевіряємо, щоб підключений модуль ceflib

У папку з проектом метаємо вміст з c:\Program Files (x86)\Borland\Delphi7\Lib\dcef3\bin\Win32\

Зберігаємо зміни та запускаємо прогу.

Адресний рядок

Виділяємо Chromium1 на формі, тиснемо F11 (виклик Інспектора), переходимо на вкладку Events і двічі клацаємо OnAddressChange. Додаємо код

Додамо третю кнопку та причепимо до неї такий оброблювач:

Давайте тепер зачепимо консоль.

Додамо до форми компонент TMemo.

Повісимо обробник у Chromium на OnConsoleMessage, напишемо там такий код:

Початковий код сторінки

Давайте отримаємо весь HTML код сторінки.

Додамо на форму ще один компонент TMemo.

Повісимо обробник у Chromium на OnLoadEnd, напишемо там такий код:

Блокуєморесурси

Повісимо обробник у Chromium на OnBeforeResourceLoad, напишемо там такий код:

Налаштування проксі

Відповідно, щоб програмно змінювати проксі - потрібно створити дві програми - одна викликає іншу з потрібними параметрами.

У параметрах командного рядка також можна змінити user-agent:

Ще досліджуються…

Власне, на цьому закінчилися мої успіхи. Незрозуміло, як отримати дані з DOM? Щоб вони були доступні не лише скрипту, а й самій прозі. Звичайно, отримавши вихідний код сторінки можна розпарсувати його, але по-перше, це не універсальне рішення, а по-друге - контент, що динамічно підвантажується, як і раніше залишається недоступним. Як отримати всю DOM модель документа будь-якої миті часу за допомогою самого компонента – на жаль, не розібрався. Тобто. поки що реальна користь від програми – це заповнення полів своїми даними, а до повноцінного парсера вона не дотягує.