Используем WEBKit вместо IE в приложениях Visual Basic.net

Используем WEBKit вместо IE в приложениях Visual Basic.net


Эпилог

Долго я искал решение данной задачи, пока чисто случайно вчера не наткнулся на один сайт где описывается как это сделать на C#.
Недолго подумав попробовал сделать в Visual Basic.net и о чудо, я больше не увижу надоедливое окно IE в своих маленьких программках.
Сразу скажу так как сам я далеко не программист, это просто увлечение по этому статья написана для новичков.
Продвинутые программисты ничего нового не увидят.

Начало

Для начала запускаем Visual Studio создаем новый проект windows forms в среде Visual Basic.
Ничегошеньки не меняем, сохраняем весь проект в папку по умолчанию.
У меня: C:\Users\Jey\Documents\Visual Studio 2012\Projects
Скриншот
image

Теперь заходим на сайт webkitdotnet.sourceforge.net
(стоит обратить внимание на информацию о лицензии библиотеки, внизу странички написано «WebKit .NET is licensed under the BSD open source license.» На сколько я понимаю английский это означает мы можем использовать и готовый компонент и исходный код с обязательным указанием автора)
переходим в раздел Downloads, нажимаем на ссылочку Win32 Binary
вас перекинет на страницу загрузки на которой нужно немного подождать и начнется загрузка архива,
в моем случае он назывался WebKit.NET-0.5-bin-cairo.zip
Находим в архиве папку BIN и распаковываем ее в папку Debug в папке bin в каталоге проекта, в
моем случае «C:\Users\Jey\Documents\Visual Studio 2012\Projects\WebKit\WebKit\bin\Debug».
Удаляем оттуда WebKitBrowserTest.exe это уже собранный тестовый браузер.

Разворот

Переключаем окна обратно в Visual Studio справа (по умолчанию) в панели элементов щелкаем правой
кнопкой мыши, и выбираем в появившемся контекстном меню Выбрать элементы. Откроется окно «Выбор
элементов панели элементов»(Мелкомягкая тавтология). На вкладке Компоненты NET.Framework (отрыта по умолчанию)
нажимаем кнопку обзор, и из папки куда разархивировали архив выбираем WebKitBrowser.dll в моем случае путь к
библиотеке оказался таким:
«C:\Users\Jey\Documents\Visual Studio 2012\Projects\WebKit\WebKit\bin\Debug\WebKitBrowse r.dll».
Теперь в панели элементов под обычным WebBrowser будет еще и WebKitBrowser.
Ну для примера закидываем его на форму:
Скриншот
image

И сверху формы для красивости можно закинуть ToolStrip и разместить на нем четыре кнопки и Textbox.
В свойствах WebKitBrowser1 находим свойство Anchor и пишем значение "Top, Bottom, Left, Right". Это позволит окну
браузера автоматически масштабироваться под окружающие его элементы (в нашем случае по бокам и снизу бордюры
формы, а сверху ToolStrip меню) при изменение размеров формы.
И теперь все это выглядит вот так:
Скриншот
image

Пишем код для кнопок:
    'Кнопка назад
    Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
        WebKitBrowser1.GoBack()
    End Sub
    'Кнопка вперед
    Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click
        WebKitBrowser1.GoForward()
    End Sub
    'Кнопка обновить
    Private Sub ToolStripButton3_Click(sender As Object, e As EventArgs) Handles ToolStripButton3.Click
        WebKitBrowser1.Refresh()
    End Sub
    'Кнопка перейти
    Private Sub ToolStripButton4_Click(sender As Object, e As EventArgs) Handles ToolStripButton4.Click
        If ToolStripTextBox1.Text <> "" Then
            WebKitBrowser1.Navigate(ToolStripTextBox1.Text)
        End If
    End Sub


Компилируем и наслаждаемся своим браузером на WebKit.
Скриншот с habrahabr.ru
image

Заключение

При компиляции, например в конфигурации release Visual Studio сама перенесет библиотеку «WebKitBrowser.dll» в соответствующий каталог, но этого будет недостаточно для запуска, по крайней мере у меня не запустился браузер. Это говорит о том что нужно таскать за программой все остальное содержимое папки bin из архива с компонентом. И в подтверждение этому в архиве есть README.TXT в котором написано:
...This package contains the binary release of WebKit.NET, along with
the Cairo build of WebKit. Files included in this release include:
bin/WebKit.dll — The WebKit library.
bin/WebKitBrowser.dll — The WebKit.NET control library. Add a reference to
this library if you wish to use the control.
bin/WebKit.Interop.dll — The library WebKit.NET uses to interface to WebKit
via COM interop.
bin/WebBrowserTest.exe — A simple application demonstrating the use of the
WebKit.NET control.
bin/*.dll — Dependencies required by WebKit.dll.
docs/WebKit .NET API Reference.chm — API reference in CHM format...

Теперь разница между использованием IE и WebKit.net
Если использовать IE (неважно какой версии), то размер готового .exe будет минимален, не более 40 кб. Но мы то помним IE у нас на самом деле не в программе а в ОС, и по этому если в ОС он не работает по каким либо причинам, то может перестать и в программе.
Если WebKit.net то размер папки с программой и со всеми необходимыми DLL будет более 30 мб.
Разница колоссальна? Ну не знаю, в век когда кинофильм может быть размером в 100 Гб?
Как известно IE не умеет работать с js скриптами (ни не работает, а именно не умеет). WebKit отлично отображал без ошибок те страницы где IE сыпал ошибки.
Протестировать другие перечисленные в комментариях движки пока что не успел, но обязательно попробую если разберусь конечно, вы же помните я только учусь.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 13

    –2
    Зачем использовать стремительно устаревающий вебкит, если есть Chrome Embedding Framework и биндинги к нему?
      +4
      Вопрос из разряда зачем жить в квартире, если можно построить шалаш?
      Я учусь и развиваюсь, это мой первый пост, я написал статью про то что сам долго искал, и наконец то нашел. И думаю много людей тоже ищут. А за вашу ссылку спасибо большое обязательно ознакомлюсь и приму к сведенью.
      +1
      В статье не хватает:
      1. На сколько увеличится объем приложения (по сравнению с IE, да и с Chrome Embedding Framework не плохо бы)
      2. Какие файлы нужно деплоить с приложением?
      3. Что поддерживается (Javascript, offline storage, cookies), а что нет.
      4. Какая лицензия.
        0
        Понял, сейчас попробую дополнить.
        +2
        Давно изученный на хабре вопрос. Я предпочитаю использовать Awesomium.NET.
          +1
          > Как известно IE не умеет работать с js скриптами
          IE прекрасно умеет работать со скриптами. Что вы имеете в виду?
            –1
            Мне не раз попадались страницы где IE выдавал ошибки именно страниц c js а эта реализация меня например полностью на данный момент устроила, подчеркиваю что на данный момент. Я еще многого не изучил.
              +2
              Это не дает оснований утверждать, что «Как известно IE не умеет работать с js скриптами»
                0
                У Вас просто включено «отображать ошибки скриптов»
                  0
                  Пробовал отключать, не помогает, так же пробовал менять версию IE, если использовать последнюю ошибок меньше, но они есть.
                    0
                    С установленной студией оно еще дает окошко для запуска дебаггера, на ноуте студии нет, никаких окошек не показывается.
                  0
                  Кстати, у меня некоторый функционал при том, что Java плагин JRE в системе не установлен, действительно отрабатывает не очень аккуратно. Например приходится открывать ссылки в новом окне для скачивания файлов на некоторых сайтах, из того, что заметил явно.
                  IE11 classic /SRV12R2
                  0
                  ни не работает, а именно не умеет

                  IE не работает с JS
                  IE не умеет JS
                  Разницы не чувствую, лингвисты, помогите!

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое