Alternative für das WebBrowser Control: CefSharp

Das WebBrowser Control

Ich habe festgestellt, dass ich doch immer wieder irgendwelche Projekte umsetzte, in denen ein WebBrowser Control benötigt wird. Sobald es nur darum geht, den Inhalt einer Seite abzurufen kann man das auch mal schnell mit einem WebRequest machen (Bei einer einfachen Seite), doch sobald man die Seite auch anzeigen will kommt man über ein Browser Control nicht herum.

Das letzte Projekt, in dem ich wieder ein Browser Control eingebunden haben, war mein Amazing Observer. Dieser Unterstützt bei der Beobachtung mehrere Händler (die ich definiert habe). Füge ich jetzt einen neuen Artikel hinzu, öffne ich für jeden dieser Händler den Browser und suche schon mal nach dem Artikel. Wird der Browser geschlossen wird abgefragt, ob die geöffnete URL dem gesuchten Artikel entspricht. Kein Hexenwerk. Doch wie einem das WebBrowser Control im Standard die Seiten teilweise anzeigt kann man ja keinem zumuten. Das ist teilweise so verschoben, dass ich zwar auf manchen Seite noch erkannt habe, dass es sich um den Artikel handelt, doch den Preis selbst konnte ich nicht sehen (musste ich auch nicht, wäre aber trotzdem schön gewesen). Stellt man dann auch noch fest, dass der Artikel vielleicht aufgrund von irgendwelchen erweiterten Titelinformationen wie z.B. ‚Ltd. Edition Deluxe Superpack (exklusive Edition mit 3 Stickern)‘ nicht gefunden wird und man die Suche nochmal neu anpassen musste, so war das keine Freude.

CefSharp im Einsatz

Also habe ich mir gedacht, schauen wir mal wie weit das mittlerweile ist, dass man hier ein anderes BrowserControl verwenden kann. Und siehe da: Mittlerweile gibt es da tatsächlich eine Alternative, die sich sehr leicht verwenden lässt: CefSharp. Wie immer wenn man was neues entdeckt probiert man das mal schnell in einer Beispiel Applikation aus. Was soll ich sagen: Ich war begeistert. Somit habe ich den Browser gleich in meinen AmazingObserver eingebaut. Am schnellsten geht das über die NuGet Paketverwaltung. CefSharp.WinForms.

Die Änderungen, die sich durch den neuen Browser im Code ergeben haben, lassen sich auf einer Bildschirmseite darstellen. CefSharp möchte irgendwann Initialisiert und auch wieder Beendet werden. Man muss den Browser dem Form hinzufügen und die Methodenaufrufe zum Abrufen einer URL und zum Navigieren sind andere als beim WebBrowser Control.

Initialisierung (Methode muss natürlich auch aufgerufen werden):

private void InitializeCefSharp()
{
  if (!Cef.IsInitialized)
  {
    CefSettings settings = new CefSettings();
    Cef.Initialize(settings);
  }
 
  webBrowser = new ChromiumWebBrowser("about:blank");
  this.Controls.Add(webBrowser);
  webBrowser.Dock = DockStyle.Fill;
}

Beenden:

private void FrmAmazingObserver_FormClosing(object sender, FormClosingEventArgs e)
{
  if (CefSharp.Cef.IsInitialized)
  {
    CefSharp.Cef.Shutdown();
  }
}

Navigation & URL abrufen:

public string Url
{
  get
  {
    // return this.webBrowser1.Url.ToString();
    return this.webBrowser.Address;
  }
  set
  {
    // this.webBrowser1.Navigate(value);
    this.webBrowser.Load(value);
  }
}

Das CefSharp Projekt

Hier noch die Projektseite von CefSharp: https://cefsharp.github.io
Sehr zu empfehlen ist auch der Quickstart Guide. http://ourcodeworld.com/articles/read/173/how-to-use-cefsharp-chromium-embedded-framework-csharp-in-a-winforms-application

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert