c# - example - Ersetzen von.NET WebBrowser-Steuerelement durch einen besseren Browser wie Chrome?




wpf browser (13)

Überprüfen Sie das GeckoFX Steuerelement.

Gibt es eine relativ einfache Möglichkeit, einen modernen Browser in eine .NET-Anwendung einzufügen?

Soweit ich weiß, ist das WebBrowser Steuerelement ein Wrapper für den IE , was kein Problem wäre, außer dass es aussieht, als sei es eine sehr alte Version von IE , mit all dem, was mit CSS-Fehlern und potentieller Sicherheit verbunden ist Risiken (wenn die Rendering-Engine nicht gepatcht wurde, kann ich wirklich erwarten, dass die zig Milliarden Pufferüberlaufprobleme behoben werden?) und andere Probleme.

Ich verwende Visual Studio C # (Express Edition - macht das hier einen Unterschied?)

Ich möchte einen guten Webbrowser in meine Anwendungen integrieren. In einigen benutze ich es nur, um den Benutzerregistrierungsprozess, die Schnittstelle mit einigen der Funktionen meiner Website und andere Dinge dieser Reihenfolge zu handhaben, aber ich habe eine andere Anwendung im Sinn, die mehr Fehler ... erfordert.

Ich brauche:

  • Ein Browser, der in ein Fenster meiner Anwendung integriert werden kann (kein separates Fenster)
  • Eine gute Unterstützung für CSS, js und andere Web-Technologien, die mit jedem modernen Browser vergleichbar sind
  • Grundlegende Browserfunktionen wie "navigieren", "zurück", "neu laden" ...
  • Liberaler Zugriff auf den Seitencode und die Ausgabe.

Ich habe über Chrome nachgedacht, da es unter die BSD-Lizenz fällt, aber ich wäre genauso glücklich mit einer aktuellen Version von IE.

So viel wie möglich möchte ich die Dinge einfach halten. Am besten wäre es, wenn man das existierende WebBrowser Control patchen könnte, was schon 70% von dem was ich brauche, aber ich glaube nicht, dass das möglich ist.

Ich habe ein ActiveX-Steuerelement für Mozilla gefunden ( http://www.iol.ie/~locka/mozilla/control.htm ), aber es sieht so aus, als wäre es eine alte Version, es ist also nicht unbedingt eine Verbesserung.

Ich bin offen für Vorschläge


Chrome verwendet (ein Fork von) Webkit, wenn Sie nicht wussten, welches auch von Safari verwendet wird. Hier sind ein paar Fragen, die von derselben Art sind:

Das Webkit ist nicht großartig, wie die andere Antwort sagt, eine Version funktioniert nicht mehr (der Google-Code eine) und die Mono-Version ist experimentell. Es wäre schön, wenn jemand sich die Mühe machen würde, einen anständigen .NET Wrapper dafür zu erstellen, aber das scheint nicht jedermanns Sache zu sein - was überraschend ist, da es nun Unterstützung für HTML5 und so viele andere Features bietet, dass der IE (8 ) Motor fehlt.

Aktualisierung (2014)

Es gibt ein neues Projekt mit zwei Lizenzen, mit dem Sie Chrome in Ihre .NET-Anwendungen namens Awesomium . Es kommt mit einem .NET API, erfordert aber einige Hacks zum Rendern (die Beispiele zeichnen das Browserfenster in einen Puffer, malen den Puffer als Bild und aktualisieren auf einen Timer).

Ich denke, das ist der von Origin in Battlefield 3 verwendete Browser.

Aktualisierung (2016)

Es gibt jetzt DotnetBrowser , eine kommerzielle Alternative zu Awesomium. Es basiert auf Chromium.


Geckofx und Webkit.net waren beide vielversprechend, aber sie waren nicht immer auf dem neuesten Stand mit Firefox und Chrome, während der Internet Explorer verbessert wurde, genauso wie das Webbrowser-Steuerelement, obwohl es sich standardmäßig wie IE7 verhält, unabhängig von der IE-Version habe aber das kann behoben werden, indem Sie in die Registrierung und ändern Sie es in IE9 HTML5 erlaubt.


Ich habe GeckoFX benutzt und es tut mir sehr gut. Es nutzt die Firefox-Engine. Der einzige Nachteil, den ich jemals damit konfrontiert habe, ist, dass es das "DocumentLoaded" -Ereignis einmal ausgibt, bevor das Dokument tatsächlich vollständig geladen ist ... Ich denke, es schießt ein, wenn das HTML geladen wird, und dann ein anderes wenn alle Bilder und Sachen sind geladen. Ich habe es behoben, indem ich einfach das erste ignoriert habe, und es hat bisher wunderbar funktioniert.

Sie können es hier finden: https://bitbucket.org/geckofx/

Wie die meisten anständigen Bibliotheken ist es Open-Source.


Ich habe eine Handvoll von Webkit-Varianten ausprobiert, aber meiner Erfahrung nach OpenWebKitSharp nichts die Fortschritte, die OpenWebKitSharp hat. Liebe es, liebe es. Die HTML5 und CSS3 Punkte sind so nah wie möglich an Google Chrome. Sehr schönes API- und Evening-Modell. Wenn Sie "nicht implementierte" APIs finden, weil sie in Webkit nicht implementiert sind. Alles andere funktioniert großartig.

OpenWebKitSharp ist ein .net-Wrapper für die Webkit-Engine basierend auf dem WebKit.NET 0.5-Projekt. Es fügt der 0.5-Version mehr Funktionalität hinzu und bietet mehr Methoden als das Build. OpenWebKitSharp unterstützt sowohl die Cairo Build (0.5) als auch die nächtlichen Builds von Webkit (standardmäßig Nightly). In Version 1.5 Stable und mehr ist der nächtliche Build enthalten und wird nach dem Aufbau automatisch kopiert. In früheren Versionen geschieht dies mit dem Cairo Build. OpenWebKitSharp unterstützt GTLite Navigator, einen schnellen, stabilen und flexiblen Webbrowser.


Ich habe seit einigen Tagen Alternativen zur C # -Webbrowser-Komponente getestet und hier ist meine Liste:

1. Mit neueren IE-Versionen 8,9:

Web-Browser-Komponente ist IE7 nicht IE8? Wie ändere ich das?

Vorteile:

  • Es ist nicht viel Arbeit erforderlich, um es zum Laufen zu bringen
  • einige HTML5 / CSS3-Unterstützung wenn IE9, voll wenn IE10

Nachteile:

  • Auf dem Zielcomputer muss die Ziel-IE-Version installiert sein, IE10 befindet sich immer noch in der Vorschau auf Win7

Dies erfordert nicht viel Arbeit und Sie können einige HTML5 und CSS3-Unterstützung erhalten, obwohl IE9 einige der besten CSS3 und HTML5-Funktionen fehlt. Aber ich bin sicher, dass Sie IE10 auf dieselbe Weise laufen lassen könnten. Das Problem wäre, dass das Zielsystem IE10 installiert haben müsste, und da es immer noch in der Vorschau auf Windows 7 ist, würde ich dagegen vorschlagen.

2. OpenWebKitSharp

OpenWebKitSharp ist ein .net-Wrapper für die Webkit-Engine basierend auf dem WebKit.NET 0.5-Projekt. WebKit ist eine Layout-Engine, die von Chrome / Safari verwendet wird

Vorteile:

  • Aktiv entwickelt
  • HTML5 / CSS3-Unterstützung

Nachteile:

  • Viele Funktionen sind nicht implementiert
  • Unterstützt x64 nicht (App muss für x86 erstellt werden)

OpenWebKit ist ziemlich nett, obwohl viele Funktionen noch nicht implementiert sind, ich habe einige Probleme mit Visual Studio, die Null Objektreferenz hier und dann im Design-Modus wirft, gab es einige js Probleme. Jeder, der es benutzt, wird fast sofort bemerken, dass js alert nichts tut. Ereignisse wie mouseup, mousedown usw. funktionieren nicht, js Drag & Drop ist fehlerhaft und so weiter ..

Ich hatte auch einige Schwierigkeiten, es zu installieren, da es erfordert, dass bestimmte Version von VC redistributable installiert ist, also nach der Ausnahme habe ich Ereignisprotokoll betrachtet, Version von VC gefunden und es installiert.

3. GeckoFX

Vorteile:

  • Funktioniert auf Mono
  • Aktiv entwickelt
  • HTML5 / CSS3-Unterstützung

Nachteile:

  • D̶o̶e̶s̶n̶'̶t̶ ̶s̶u̶p̶p̶o̶r̶t̶ ̶x̶6̶4̶ ̶ (̶A̶p̶p̶ ̶m̶u̶s̶t̶ ̶b̶e̶ ̶b̶u̶i̶l̶t̶ ̶f̶o̶r̶ ̶x̶8̶6̶) see - siehe unten stehende Kommentare

GeckoFX ist ein plattformübergreifendes Webbrowser-Steuerelement zum Einbetten in WinForms-Anwendungen. Dies kann mit .NET unter Windows und mit Mono unter Linux verwendet werden. Gecko ist eine von Firefox verwendete Layout-Engine.

Ich stieß auf wenige Informationen, dass GeckoFX nicht aktiv entwickelt wurde, was nicht stimmt, natürlich gibt es immer eine oder zwei Versionen hinter Firefox, aber das ist normal, ich war wirklich beeindruckt von der Aktivität und der Kontrolle selbst. Es tut alles, was ich brauchte, aber ich brauchte etwas Zeit, um es zum Laufen zu bringen, hier ist ein kleines Tutorial, um es zum Laufen zu bringen:

  1. Laden Sie GeckoFx-Windows-16.0-0.2 , hier können Sie überprüfen, ob neuere GeckoFX verfügbar GeckoFX
  2. Fügen Sie Verweise auf zwei heruntergeladene DLLs hinzu
  3. Da GeckoFX Wrapper ist, benötigen Sie XulRunner, gehen Sie zur Versionsliste , um zu sehen, welche Sie benötigen
  4. Jetzt wo wir wissen, welche Version von XulRunner wir brauchen, gehen wir zu Mozilla XulRunner Releases , gehen Sie zum Versionsordner -> Laufzeiten -> xulrunner- (your_version) .de-US.win32.zip, in unserem Fall xulrunner-16.0.en-US.win32.zip
  5. Entpacken Sie alles und kopieren Sie alle Dateien in Ihren bin \ Debug (oder release, wenn Ihr Projekt freigegeben wird)
  6. Gehen Sie zum Visual Studio Designer Ihres Formulars, gehen Sie zur Toolbox, klicken Sie mit der rechten Maustaste hinein -> Wählen Sie Objekte -> Durchsuchen -> Suchen Sie heruntergeladen GeckoFX winforms DLL-Datei -> OK
  7. Jetzt sollten Sie GeckoWebBrowser neue Kontrolle haben

Wenn Sie Chrome wirklich verwenden müssen, werfen Sie einen Blick auf dieses Produkt mit dem Namen Awesomium . Es ist kostenlos für nicht-kommerzielle Projekte, aber die Lizenz ist ein paar tausend Dollar für kommerzielle Awesomium .


Ich weiß, dass dies kein "Ersatz" WebBrowser-Steuerelement ist, aber ich hatte einige schreckliche Rendering-Probleme, während ich eine Seite, die BootStrap 3+ für Layout usw. verwendet, zeigte und dann fand ich einen Beitrag, der vorgeschlagen, dass ich Folgendes benutze. Anscheinend ist es spezifisch für IE und sagt ihm, dass es die neueste Variante benutzt, die auf dem Client-Rechner zum Rendern gefunden wurde (damit IE7 nicht benutzt wird, da ich glaube, dass es Standard ist)

Also leg einfach:

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

irgendwo im Kopfbereich Ihres Dokuments.

Wenn es natürlich nicht Ihr Dokument ist, dann hilft das natürlich nicht (obwohl ich es persönlich für ein Sicherheitsloch halte, wenn Sie Seiten lesen, die nicht von Ihnen selbst über die Webbrowser-Steuerung erstellt wurden - warum nicht einfach einen Webbrowser verwenden!)

Viel Glück.


MozNet ist ein .NET-Steuerelement, das früher auf dem mehr oder weniger verlassenen GeckoFX-Steuerelement basierte, aber noch nicht vollständig entwickelt ist und über wesentlich mehr Funktionen verfügt als GeckoFX. Sie finden es auf der Se7en Soft Website.


Schauen Sie sich das Mono.WebBrowser Steuerelement an - es bettet entweder Gecko (wie von Firefox verwendet) oder WebKit (wie von Safari verwendet) in WinForms ein (ohne ActiveX zu verwenden).


Sehen Sie sich die DotnetBrowser Bibliothek an. Es bietet Chrom-basierte WPF- und WinForms-Browsersteuerelemente, die sehr einfach in .NET-Anwendungen eingebettet werden können. Es unterstützt alle modernen Web-Standards wie HTML5, CSS3 und JavaScript. Die gerenderte Seite sieht genau wie in Google Chrome aus.

Die Bibliothek erbt die Multi-Prozess-Architektur von Chromium - jede Webseite wird in einem separaten Chromium-Prozess gerendert und die Anwendung funktioniert auch nach dem Absturz des Plugins oder einem anderen unerwarteten Fehler auf der Webseite.

Hier sind einige andere nützliche Funktionen von DotNetBrowser: es ist möglich, Ereignisse zu laden, Netzwerkaktivitäten zu verwalten, Proxy zu konfigurieren, Benutzeraktionen zu simulieren, mit Cookies zu arbeiten, auf DOM zuzugreifen und sie zu ändern, DOM-Ereignisse anzuhören, JavaScript von .NET aufzurufen und umgekehrt, verwenden Sie Web-Kamera und Mikrofon auf der Webseite, richten Sie WebRTC-basierte Kommunikation und more .

Weitere Informationen finden Sie in der API-Referenz .

Das folgende Code-Snippet zeigt, wie Sie ein BrowserView erstellen, es in ein Formular einbetten und eine URL laden:

using System.Windows.Forms;
using DotNetBrowser;
using DotNetBrowser.WinForms;

namespace WinForms.DotNetBrowser
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            BrowserView browserView = new WinFormsBrowserView();
            Controls.Add((Control) browserView);
            browserView.Browser.LoadURL("http://www.youtube.com");
        }
    }
}

Sobald Sie das obige Beispiel ausgeführt haben, erhalten Sie folgende Ausgabe:

Die Bibliothek ist kommerziell, kann jedoch in Open-Source- und akademischen Projekten verwendet werden. Kommerzielle Lizenzen beinhalten Support-Pakete für verschiedene Teamgrößen. Es ist auch möglich, den Quellcode der Bibliothek zu erwerben.

Neben der eigenen Seite ist die Komponente als NuGet-Paket und als VSIX-Paket im Visual Studio Marketplace verfügbar.


Update 2016:

Für mich ist EO.WebBrowser die einzige zuverlässige, gepflegte Browser-Alternative zu IE. Ich verbrachte Tage und Wochen damit, die anderen auszuprobieren. Alle von ihnen hatten einige Probleme, die die Show für mich irgendwann gestoppt haben.



Zur Kasse CefSharp .Net Bindings, ein Projekt, das ich vor einiger Zeit begonnen habe , das glücklicherweise von der Community aufgegriffen und zu etwas Wundervollem gemacht wurde.

Das Projekt schließt das Chromium Embedded Framework ein und wurde in einer Reihe von Großprojekten eingesetzt, darunter Rdios Windows-Client, Facebook Messenger für Windows und Github für Windows.

Es bietet Browser-Steuerelemente für WPF und Winforms und verfügt über jede Menge Funktionen und Erweiterungspunkte. Da es auf Chrom basiert, ist es auch blitzschnell.

Install-Package CefSharp.Wpf es von NuGet: Install-Package CefSharp.Wpf oder Install-Package CefSharp.WinForms

Schau dir Beispiele an und gib deine Gedanken / Feedback / Pull-Anfragen: https://github.com/cefsharp/CefSharp

BSD lizenziert





webbrowser-control