Pull to refresh

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

Reading time 4 min
Views 15K

Используем 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 сыпал ошибки.
Протестировать другие перечисленные в комментариях движки пока что не успел, но обязательно попробую если разберусь конечно, вы же помните я только учусь.
Tags:
Hubs:
0
Comments 13
Comments Comments 13

Articles