Зазвичай свій браузер пишуть, щоб зробити автоматизацію або програмне управління над деякими процесами. І як не дивно практично ніхто не хоче використовувати вбудований компонент браузера того середовища розробки, в якій створюється проект. І тут немає нічого дивного. Тому розробники змушені шукати сторонні продукти для вирішення своїх завдань.
При пошуках движка, вибір припав на движок від Mozilla Gecko . І так вийшло, що документація і приклади щодо його використання (практично тільки на англомовних ресурсах) були під C # або під VB.Net. Я свій вибір зупинив на C #.
Проект буде розроблятися в середовищі розробки - Visual Studio 2010. Для роботи нам знадобиться завантажити і встановити SDK (xulrunner) від Mozilla. Xulrunner можна скачати тут . Рекомендую скачати версію 1.9.0.0. Далі нам необхідно завантажити та встановити бібліотеку Skybound.GeckoFX.bin, яка є обгорткою для xulrunner під язик програмування C #. І в цьому випадку я також рекомендую завантажити версію бібліотеки - 1.9.0.0.
Справа в тому, що в деяких SDK, є баги. Я сам недавно зіткнувся, коли треба було написати новий проект. Частина вихідного коду взяв зі старого проекту, а ось який версії xulrunner в ньому використовувався, я забув. Отримавши баг при роботі проекту і прочитавши пару статей (спочатку підозра падала на Visual Studio 2010) я дізнався, що в деяких версіях є істотні недоробки. Тому демонстрація підключення браузера, буде відбуватися на перевіреної версії платформи xulrunner і перевіреної версії бібліотеки-обгортки.
Якщо ви завантажили все необхідне, то можна переходити до створення демонстраційного проекту. Але для початку необхідно розібратися з підключенням xulrunner. З отриманого архіву з xulrunner нас цікавить каталог bin. Створимо на диску "С" наприклад, каталог "XPCOM" і в нього скопіюємо весь вміст каталогу bin з архіву з нашим SDK. Потім, необхідно розпакувати архів з бібліотекою Skybound.GeckoFX.bin. Далі відкриваємо Visual Studio і створюємо стандартний проект під windows. На наступному кроці, необхідно відкрити панель елементів. Після чого натискаємо по її області, правою клавішею миші. Перед вами повинна з'явитися форма з вибором елементів панелі управління.
Переходимо на вкладку "Компоненти .NET Framework" і натискаємо кнопку "Огляд". Перед нами відкриється стандартне діалогове вікно для вибору файлу. У ньому, то і вибираємо файл Skybound.Gecko.dll, який теж знаходиться в каталозі bin, каталогу Skybound.GeckoFX.bin.v1.9.xx і натискаємо кнопку "OK". В панелі елементів у вкладці "Загальні" повинен з'явитися компонент - GeckoWebBrowser. Після чого, компонент GeckoWebBrowser, потрібно перенести на форму.
Тепер необхідно провести ініціалізацію компонента. Для початку необхідно додати простір імен Skybound.Gecko. Для цього на початку коду, вставимо рядок:
using Skybound.Gecko;
Потім в модулі форми, в конструкторі форми, додамо наступний код:
Xpcom.Initialize ( "З: \\ XPCOM");
І ще один рядок коду необхідно додати в обробник події активації форми:
Mozilla.Navigate ( "http://google.ru", 0, "", null, "");
Все можна запустити проект. Якщо все запрацювало, то ви повинні побачити наступне:
У самому движку, є всі ті можливості, які були присутні в Mozilla, а це близько трьох років тому. Чого не можна сказати про бібліотеку-обгортці. У цій версії, на основі якої побудований демонстраційний проект, перелік можливостей дуже і дуже малий. Може бути і зворотне: в xulrunner можуть бути відсутні деякі інтерфейси , Реалізація яких є у встановленій бібліотеці-обгортці. Подивитися перелік доступних інтерфейсів в xulrunner можна, якщо в каталозі з SDK відкрити каталог bin \ components. Там повинні бути присутніми файли з розширенням * .xpt. Це і є бібліотеки, які вийшли в результаті компіляції файлів з описом інтерфейсів. На даний момент движок Mozilla фундаментально змінено і існують бібліотеки-обгортки, набагато більш нових версій (можливо там функціональних особливостей буде набагато більше). Що я розумію під обмеженням функціональних можливостей?
Ось, наприклад, які можливості відсутні в Skybound.Gecko v1.9.0.0:
- видалення cookie;
- можливість генерації подій від миші;
- і ще багато всього;
Погодьтеся, такі функціональні особливості списати з рахунків ми не можемо. Звичайно, нічого страшного в цьому немає. Це все при бажанні реалізовується самостійно, шляхом додавання необхідних інтерфейсів і реалізацією деяких методів. Документації в наш час досить, але не факт що у кого то, буде проблема ідентична вашій. Але в будь-якому випадку при бажанні розібратися можна.
Про те як можна модифікувати браузер, дивіться тут .
Що я розумію під обмеженням функціональних можливостей?