Skip to content

Embedded Browser

MIkE edited this page Jan 25, 2018 · 25 revisions

Available Embedded Browsers

  • Cef - Chromium Embedded Framework (Aardvark Platforms Default)
  • Gecko - Browser Engine used in Firefox
    • GeckoFX - Gecko 45, C# Lib, Nuget package available
    • XulFx - Gecko 52, C# Lib, no Nuget package available

not tested

  • Servo - Browser Engine, base for new Gecko used in FF-57-Quantum
  • WebKit - Browser Engine used in Apples Safari
  • KHTML - Browser Engine used in KDEs Konqueror (Ancestor of WebKit, Chromium, Opera,...)
  • EdgeHTML/WebView - UWP Edge Browser Control, Win10 only, not tested with Aardvark Platform

not working

  • WebBrowser - Winforms Internet Explorer Control, doesn't work with Aardvark Platform

Cef Howtos

Gecko Howto

NuGet packages:
32bit: Geckofx45
64bit: Geckofx45.64

Gecko.Xpcom.Initialize("Firefox");
var browser = new Gecko.GeckoWebBrowser() {
    Dock = DockStyle.Fill,
    Navigate("http://orf.at")
}

Fixes

Fix for use with DockPanel Suite by WeiFenLuo

DPS destroys and recreates its Forms. As a result Chromium crashes and Gecko refuses to show anything.
Fix: Detach and reattach browser control

class MyForm : WeifenLuo.WinFormsUI.Docking.DockContent
...
myForm.DockStateChanged += new EventHandler(DockedBrowser_DockStateChanged);
myForm.HandleDestroyed += new EventHandler(DockedBrowser_HandleDestroyed);
...
void DockedBrowser_HandleDestroyed(object sender, EventArgs e) {
    m_myBrowserCtrl.Parent = null;
}

void DockedBrowser_DockStateChanged(object sender, EventArgs e) {
    if (IsHandleCreated) {
        m_myBrowserCtrl.Parent = FindForm()
        m_myBrowserCtrl.BringToFront();
    }
}

Fix for Cef colliding with VS hosting process

CefRuntime starts the current executable several times to initiate its child processes. The VS hosting process breaks this.
There are two solutions to fix this:

  • Disable "Visual Studio hosting process" in the projects properties under Debug
  • Use a different executable to start the child process and oppress CrashPad
Clone this wiki locally
You can’t perform that action at this time.