Робота з компонентом
У цій статті йтиметься про 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 модель документа будь-якої миті часу за допомогою самого компонента – на жаль, не розібрався. Тобто. поки що реальна користь від програми – це заповнення полів своїми даними, а до повноцінного парсера вона не дотягує.