Я могу назвать 2 главных преимущества, например, в привязке к разработке утилиты для Вконтакта. Во-первых, он пошустрее будет. Во-вторых, в нем очень удобная и простая работа с cookies.
Поясню второй пункт. Например, нам надо, чтобы через одну форму можно было работать с несколькими аккаунтами vk.com без постоянного "перелогинивания". В Webbrowser-е это можно организовать только шаманскими методами, а вот в Chromium-e решение выглядит очень красиво и просто.
Установка DCEF3 в Delphi7 (компонент TChromium)
На Googlecode можно найти 2 версии: старую (http://code.google.com/p/delphichromiumembedded/) и поновее (http://code.google.com/p/dcef3/). Рекомендую вторую.
- Скачиваем свежий дистрибутив с помощью SVN в папку c:\Program Files\Borland\Delphi7\Lib\dcef3.
- Загружаем Delphi, выбираем через "Open" пакет для D7, компилируем и инсталлируем. Если все хорошо, покажут TChromium в списке доступных компонентов на отдельной новой вкладке.
- Закрываем пакет, не сохраняя изменения в проекте.
- Проверяем Chromium в работе.
Тестирование работы компонента
Для теста создадим на форме 2 браузера, которые будут работать с независимыми друг от друга кукисами. С компонентом TWebbrowser такого так просто не добиться.
Размещаем на форме компонент TChromium и 2 кнопки.
В папку с проектом (или туда, куда компиллируется программа) копируем dll-ки из c:\Program Files\Borland\Delphi7\Lib\dcef3\bin\Win32\.
В uses дописываем библиотеку ceflib.
В обработчиках нажатия кнопок пишем:
const DefaultCookiesDir = 'Cookies/'; ... procedure TForm1.Button1Click(Sender: TObject); var CookieManager: ICefCookieManager; CookiesPath : String; begin CookiesPath := ExtractFilePath(Application.ExeName) + DefaultCookiesDir + 'User1'; CookieManager := TCefCookieManagerRef.Global; CookieManager.SetStoragePath(CookiesPath); Chromium1.Load('vk.com'); end; procedure TForm1.Button2Click(Sender: TObject); var CookieManager: ICefCookieManager; CookiesPath : String; begin CookiesPath := ExtractFilePath(Application.ExeName) + DefaultCookiesDir + 'User2'; CookieManager := TCefCookieManagerRef.Global; CookieManager.SetStoragePath(CookiesPath); Chromium1.Load('vk.com'); end;
Не ждите, что это уже получилось супер-приложение :) Я просто привожу пример, как для TChromium можно с легкостью переключать папки, в которых браузер хранит кукисы.
Нажимаем на первую кнопку, логинимся:
Нажимаем на вторую кнопку. Второй раз браузер будет использовать совсем другие кукисы, поэтому загружается главная страница.
При этом автоматически создаются подкаталоги в папке Cookies.
Если после этого снова нажать на первую кнопку, то загрузится страница пользователя, под которым логинились вначале.
Тут видно еще один плюс для приложения, работающего с множеством юзеров. Кукисы сохраняются, поэтому в течение их срока жизни каждый раз логиниться не надо — достаточно просто проверять, что залогинены.
Чтобы быть в курсе обновлений блога, можно подписаться на RSS.
Жду продолжения) Особенно интересует как очистить кукисы.
ОтветитьУдалитьЗдравствуйте. Спасибо за статьи. Возможны ли в TCromium такие же действия как в TWebBrowser, например, найти линк и симитиравать переход по нему, или найти форму и заполнить ее. Зарание спасибо.
ОтветитьУдалитьОлег, написала про очистку кукисов тут.
ОтветитьУдалитьСергей, да, конечно, можно. Как будет время, напишу об этом на блоге.
Спасибо Вам огромное!!!!!
ОтветитьУдалитьЯ уже отчаялся, думал не найду информацию про этот компанент. Подписался на ваши посты.
Жду новых статей на тему DELPHI .
Спасибо!
ICefCookieManager
ОтветитьУдалитьГде искать? выдает ошибку Chromium стоит.
что за компонент RAD 2010 и XE3
D7 + dcef3 = EExternalException in module libcef.dll
ОтветитьУдалитьПросто добавил на форму компонент и запустил
Попробуйте просто откомпилировать и запустить непосредственно получившийся .exe-файл.
УдалитьСпасибо, статья весьма познавательная.
Удалить*Ошибка забавная, эти же dll, подключенные к скомпилированному из ХЕ3 приложению, работают на ура.
**Почему-то по компоненту крайне мало информации даже на magpcss.org (или я просто искать не умею?) Где Вы берете описание его свойств/процедур/функций? Я не смог найти ни мануала, ни faq, ни даже example :(
blog, я не нашла, где бы все было в одном месте... Что-то нахожу на StackOverflow, что-то по другим форумам, что-то додумываю по исходникам :) К сожалению, из-за катастрофической нехватки времени уже давно не садилась за программирование)
УдалитьПрограмма с Chromium отображается в статистике сайтов как старая версия Хрома. Можно ли как то это изменить? В TWebBrowser, например, можно записать в реестр версию IE и он будет отображаться как 8 или 9 IE. А как с Chromium?
ОтветитьУдалитьЯ не знаю ответа. Может, кто-нибудь из читателей подскажет.
УдалитьПредположу что можно в событии onBeforeResourceLoad попытаться перехватить user agent или пройтись редактором ресурсов по библиотекам.
УдалитьСпасибо. Почти нашел ответ. Версия хрома зависит насколько "свежий" dcef3 установили. На данный момент - показывает 25 Хром.
УдалитьМожет вам известна ошибка при инсталяции DCEF на XE2 -
ОтветитьУдалить[DCC Error] ceffmx.pas(427): E2003 Undeclared identifier: 'type_'
Ждем новых уроков,например как нажать на кнопки и.т.д
ОтветитьУдалитьЗдорово бы было найти информацию по установке сокс-прокси одновременно для нескольких эксемпляров браузера
ОтветитьУдалитьНедавно стал использовать TWebBrowser пошли баги вешает программу перешел на TChromium стало полегче но все рано на js c сайтов начинает жрать память и в итоге опять вешает программу скрипты проверенные рабочие предназначены к доступу финансовым ресурсам типа http://www.dukascopy.com/swiss/russian/marketwatch/webproducts/charts/ в мозиле вроде все нормально работает ну естественно памяти выжирает под 300мб что не айс хотел бы узнать кто сталкивался с такими траблами и где почитать манул времени на эксперименты нет или может есть подобное от Geko или еще какой компонент а то надо все уперлось в это. Если что могу выслать пример приложения написанного на Delphi XE2
ОтветитьУдалитьDelphi XE3, dcef3 скачивал, при запуске Invalid CEF Library version
ОтветитьУдалитьВпервые пишу парсер. Накопилось очень много вопросов по компоненту TChromium. Пожалуйста, подскажите инфо-ресурсы по работе с компонентом!
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьПочему-то через этот компонент не работает Flash.:(
ОтветитьУдалитьПодскажите пожалуйста, как реализовать корректную работу Flash-приложений через браузер на этом компоненте?
во всех статьях вижу упоминания о классе ICefCookieManager, извиняюсь за вопрос, но откуда вы его берете?
ОтветитьУдалитьУ Вас примере используется единственная библиотека ceflib, ссылка на исходник:
https://code.google.com/p/delphichromiumembedded/source/browse/trunk/src/ceflib.pas
в ней тоже нет класса ICefCookieManager
Это интерфейс. И если внимательно поищете, то найдете его в ceflib (в том числе в файле по ссылке, которую вы привели).
УдалитьОбнаружил неприятный момент. В папке с программой появляется куча разных файлов, в том числе libcef.dll, который весит почти 32 мегабайта. Их теперь нужно всегда с собой таскать???
ОтветитьУдалитьда
УдалитьДа
УдалитьОтличные статьи, отличный блог
ОтветитьУдалитьу меня почемуто долго грузит страницы в чем дело кто в курсе
ОтветитьУдалитьВ новых версиях хромиума стало загружать страницы по 15-30 секунд. Переустанавливал делфи и сам хромиум ничего не помогает, но старые версии работают отлично, но в них нету ICefCookieManager.
ОтветитьУдалитьСкиньте пожалуйста нормальную версию хромиума с ICefCookieManager и чтобы он не лагал.
Не работает . показывает ошибку тут ICefCookieManager
ОтветитьУдалитьПодскажите, почему не работают ссылки для скачивания компоненты?
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалить