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 darstellen würde, außer dass es sich um eine sehr alte Version des IE handelt , mit allem, was mit CSS-Fehlern und potenziellen Sicherheitsrisiken verbunden ist (Wenn die Rendering-Engine nicht gepatcht wurde, kann ich dann wirklich damit rechnen, dass die zillion Pufferüberlaufprobleme behoben werden?) und andere Probleme.
Ich verwende Visual Studio C # (Express Edition - macht es hier einen Unterschied?)
Ich möchte einen guten Webbrowser in meine Anwendungen integrieren. In einigen Fällen verwende ich es nur, um den Benutzerregistrierungsprozess abzuwickeln, mit einigen Funktionen meiner Website und anderen Dingen dieser Reihenfolge zu kommunizieren, aber ich habe eine andere Anwendung im Sinn, die mehr Fehlerkontrolle 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 Webtechnologien, die mit jedem modernen Browser vergleichbar ist
- 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 zufrieden mit einer aktuellen Version von IE.
Ich möchte die Dinge so einfach wie möglich halten. Das Beste wäre, wenn man das vorhandene WebBrowser
Steuerelement patchen könnte , das bereits ungefähr 70% meiner Anforderungen erfüllt, aber ich denke nicht, dass dies möglich ist.
Ich habe ein ActiveX-Steuerelement für Mozilla gefunden ( http://www.iol.ie/~locka/mozilla/control.htm ), aber es sieht aus wie eine alte Version, daher ist es nicht unbedingt eine Verbesserung.
Ich bin offen für Vorschläge
quelle
WebBrowser
Steuerelement die IE7-Emulation, sofern nicht anders angegebenFEATURE_BROWSER_EMULATION
. Dies ist hier dokumentiert: blogs.msdn.com/b/askie/archive/2009/03/23/…Antworten:
Kasse CefSharp .Net- Bindungen, ein Projekt, das ich vor einiger Zeit gestartet habe und das dankenswerterweise von der Community aufgegriffen und in etwas Wunderbares verwandelt wurde.
Das Projekt umfasst das Chromium Embedded Framework und wurde in einer Reihe von Großprojekten verwendet, darunter der Windows-Client von Rdio, Facebook Messenger für Windows und Github für Windows.
Es verfügt über Browser-Steuerelemente für WPF und Winforms sowie über zahlreiche Funktionen und Erweiterungspunkte. Da es auf Chrom basiert, ist es auch unglaublich schnell.
Hol es dir bei NuGet:
Install-Package CefSharp.Wpf
oderInstall-Package CefSharp.WinForms
Schauen Sie sich Beispiele an und geben Sie Ihre Gedanken / Rückmeldungen / Pull-Anfragen an: https://github.com/cefsharp/CefSharp
BSD lizenziert
quelle
Chrome verwendet (eine Abzweigung von) Webkit, wenn Sie es nicht wussten, das auch von Safari verwendet wird. Hier sind einige Fragen, die der gleichen Art sind:
Das Webkit ist nicht großartig, wie die andere Antwort besagt, eine Version funktioniert nicht mehr (die Google Code One) und die Mono Version ist experimentell. Es wäre schön, wenn sich jemand die Mühe machen würde, einen anständigen .NET-Wrapper dafür zu erstellen, aber das scheint niemand zu wollen - was überraschend ist, da es jetzt HTML5 und so viele andere Funktionen unterstützt, dass der IE (8) ) Motor fehlt.
Update (2014)
Es gibt ein neues Projekt mit zwei Lizenzen, mit dem Sie Chrome in Ihre .NET-Anwendungen einbetten können Awesomium einbetten können . Es wird mit einer .NET-API geliefert, erfordert jedoch einige Hacks zum Rendern (die Beispiele zeichnen das Browserfenster in einen Puffer, malen den Puffer als Bild und aktualisieren auf einem Timer).
Ich denke, dies ist der Browser, der von Origin in Battlefield 3 verwendet wird.
Update (2016)
Es gibt jetzt DotnetBrowser , eine kommerzielle Alternative zu Awesomium. Es basiert auf Chrom.
quelle
Ich habe seit einigen Tagen Alternativen zur C # -Browser-Komponente getestet und hier ist meine Liste:
1. Verwenden neuerer IE-Versionen 8,9:
Webbrowser-Komponente ist IE7 nicht IE8? Wie kann man das ändern?
Vorteile:
Nachteile:
Dies erfordert nicht viel Arbeit und Sie können HTML5- und CSS3-Unterstützung erhalten, obwohl IE9 einige der besten CSS3- und HTML5-Funktionen nicht bietet. Aber ich bin sicher, Sie könnten IE10 auf die gleiche Weise zum Laufen bringen. Das Problem wäre, dass auf dem Zielsystem IE10 installiert sein müsste, und da sich Windows 7 noch in der Vorschau befindet, würde ich dagegen vorschlagen.
2. OpenWebKitSharp
OpenWebKitSharp ist ein .net-Wrapper für die Webkit-Engine, der auf dem WebKit.NET 0.5-Projekt basiert. WebKit ist eine Layout-Engine, die von Chrome / Safari verwendet wird
Vorteile:
Nachteile:
OpenWebKit ist ganz nett, obwohl viele Funktionen noch nicht implementiert sind. Ich hatte nur wenige Probleme mit Visual Studio, das hier eine Null-Objektreferenz auslöst, und dann gibt es im Entwurfsmodus einige Probleme. Jeder, der es benutzt, wird fast sofort bemerken, dass js alert nichts tut. Ereignisse wie Mouseup, Mousedown ... usw. funktionieren nicht, Drag & Drop ist fehlerhaft und so weiter.
Ich hatte auch einige Probleme bei der Installation, da eine bestimmte Version von VC Redistributable installiert werden muss. Nach einer Ausnahme habe ich mir das Ereignisprotokoll angesehen, die Version von VC gefunden und installiert.
3. GeckoFX
Vorteile:
Nachteile:
GeckoFX ist ein plattformübergreifendes Webrowser-Steuerelement zum Einbetten in WinForms-Anwendungen. Dies kann mit .NET unter Windows und mit Mono unter Linux verwendet werden. Gecko ist eine Layout-Engine, die von Firefox verwendet wird.
Ich bin auf wenige Informationen gestoßen, dass GeckoFX nicht aktiv entwickelt wurde, was nicht stimmt. Natürlich sind es immer eine oder zwei Versionen hinter Firefox, aber das ist normal. Ich war wirklich beeindruckt von der Aktivität und der Steuerung selbst. Es macht 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:
Wenn Sie Chrome wirklich verwenden müssen, schauen Sie sich dieses Produkt namens Awesomium an . Es ist kostenlos für nichtkommerzielle Projekte, aber die Lizenz für kommerzielle Projekte beträgt einige tausend Dollar.
quelle
Ich hatte das gleiche Problem, der WebBrowser verwendete eine alte Version des IE. Beim Googeln stieß ich auf den folgenden Code, der eine Änderung in der Registrierung vornimmt und den WebBrowser dazu veranlasst, die aktuellste IE-Version zu verwenden:
Sie müssen nur eine Klasse erstellen und diesen Code einfügen und dann beim Starten des Programms den folgenden Code ausführen:
VB.NET:
Sie können es wie folgt verwenden:
quelle
Sie können die Registrierung verwenden, um die IE-Version für die Webbrowser-Steuerung festzulegen. Gehen Sie zu: HKLM \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION und fügen Sie "yourApplicationName.exe" mit dem Wert von browser_emulation hinzu. Den Wert von browser_emulation finden Sie unter folgendem Link: http://msdn.microsoft.com/en-us /library/ee330730%28VS.85%29.aspx#browser_emulation
quelle
Schauen Sie sich das Mono.WebBrowser- Steuerelement an - es bettet entweder Gecko (wie von Firefox verwendet) oder WebKit (wie von Safari verwendet) in WinForms (ohne ActiveX) ein.
quelle
Ich weiß, dass dies kein 'Ersatz'-WebBrowser-Steuerelement ist, aber ich hatte einige schreckliche Rendering-Probleme, als ich eine Seite zeigte, die BootStrap 3+ für Layout usw. verwendete, und dann fand ich einen Beitrag, der vorschlug, Folgendes zu verwenden. Anscheinend ist es spezifisch für den Internet Explorer und weist ihn an, die neueste Variante des Clientcomputers zum Rendern zu verwenden (daher wird IE7 nicht verwendet, da dies meiner Meinung nach Standard ist).
Also einfach gesagt:
irgendwo im Kopfteil Ihres Dokuments.
Wenn es natürlich nicht Ihr Dokument ist, hilft dies natürlich nicht weiter (obwohl ich es persönlich als Sicherheitslücke betrachte, wenn Sie Seiten lesen, die nicht von Ihnen selbst über das Webbrowser-Steuerelement erstellt wurden - warum nicht einfach einen Webbrowser verwenden!)
Viel Glück.
quelle
<head>
, sondern als erstes Kind von<head>
. Wir haben eine Weile gebraucht, um das herauszufinden.<meta>
als erstes untergeordnetes Element von platzieren<head>
, wird es im Kompatibilitätsmodus und nicht im Edge-Modus ausgeführt.Schauen Sie sich den DotNetBrowser an Bibliothek an. Es bietet Chromium-basierte WPF- und WinForms-Browsersteuerelemente, die sich ganz einfach in .NET-Anwendungen einbetten lassen. Es unterstützt alle modernen Webstandards einschließlich HTML5, CSS3 und JavaScript. Die gerenderte Seite sieht genauso aus wie in Google Chrome.
Die Bibliothek erbt die Multiprozessarchitektur von Chromium. Jede Webseite wird in einem separaten Chromium-Prozess gerendert, und die Anwendung funktioniert auch nach einem Absturz des Plugins oder einem anderen unerwarteten Fehler auf der Webseite weiter.
Hier sind einige andere nützliche Funktionen, die von DotNetBrowser bereitgestellt werden: Es ist möglich, Ladeereignisse abzuhören, Netzwerkaktivitäten zu verarbeiten, Proxys zu konfigurieren, Benutzeraktionen zu simulieren, mit Cookies zu arbeiten, auf DOM zuzugreifen und diese zu ändern, DOM-Ereignisse abzuhören und JavaScript aus .NET aufzurufen und umgekehrt: Verwenden Sie eine Webkamera und ein Mikrofon auf der Webseite, richten Sie eine WebRTC-basierte Kommunikation ein und vieles mehr .
Weitere Informationen finden Sie in der API-Referenz .
Das folgende Codefragment zeigt, wie Sie eine Browseransicht erstellen, in ein Formular einbetten und eine URL laden:
Sobald Sie das obige Beispiel ausgeführt haben, erhalten Sie die folgende Ausgabe:
Die Bibliothek ist kommerziell. Kommerzielle Lizenzen enthalten Support-Pakete für verschiedene Teamgrößen. Es ist auch möglich, den Quellcode der Bibliothek zu erwerben.
Neben einer eigenen Seite ist die Komponente als NuGet-Paket und als VSIX-Paket im Visual Studio Marketplace verfügbar .
quelle
Ich habe eine Handvoll Webkit-Varianten ausprobiert, aber meiner Erfahrung nach geht nichts über die Fortschritte von OpenWebkitSharp . Ich liebe es, ich liebe es. HTML5- und CSS3-Ergebnisse sind so nah wie möglich an Google Chrome. Sehr schönes API und Eventing-Modell. Wenn Sie "nicht implementierte" APIs am wahrscheinlichsten finden, weil sie nicht in Webkit implementiert sind. Alles andere funktioniert super.
quelle
UPDATE 2018 MAI
Wenn Sie eine Anwendung für die Ausführung unter Windows 10 anstreben, können Sie den Edge-Browser jetzt mithilfe des Windows Community Toolkit in Ihre .net-Anwendung einbetten .
WPF Beispiel:
1) Installieren Sie das Windows Community Toolkit Nuget-Paket
2) XAML-Code
3) CS-Code:
WinForms Beispiel:
Weitere Informationen finden Sie unter diesem Link .
quelle
Versuchen Sie es mit EO.WebBrowser . Es ist neu und basiert auf der neuesten Version des Chrome-Browsers. Das Beste daran ist, dass es alles in eine einzelne .NET-DLL packt, so dass es nicht nur sehr einfach zu verwenden und bereitzustellen ist, sondern dass dieselbe DLL sowohl 32-Bit- als auch 64-Bit-DLL unterstützt, da es sich um eine .NET-DLL handelt.
quelle
Ich habe GeckoFX verwendet und es dient mir sehr gut. Es verwendet die Firefox-Engine. Die einzige Einschränkung, auf die ich jemals gestoßen bin, ist, dass das Ereignis "DocumentLoaded" einmal ausgegeben wird, bevor das Dokument tatsächlich vollständig geladen ist Bilder und Sachen werden geladen. Ich habe es behoben, indem ich das erste einfach ignoriert habe, und es hat bisher einwandfrei funktioniert.
Sie finden es hier: https://bitbucket.org/geckofx/
Wie die meisten anständigen Bibliotheken ist es Open Source.
quelle
MozNet ist ein .NET-Steuerelement, das zuvor auf dem mehr oder weniger verlassenen GeckoFX-Steuerelement basiert, sich jedoch in der vollständigen Entwicklung befindet und weit mehr Funktionen bietet, als GeckoFX mit einem Stick erschüttern kann. Sie finden es auf der Se7en Soft- Website.
quelle
EO.BrowserControl ist schnell und einfach. Es verfügt über eine Chrome-Browser-Engine und funktioniert mit jeder Version von .NET
https://visualstudiogallery.msdn.microsoft.com/fcee0646-42e7-484f-b22e-f8b2ace55dd7
Hinweis: Dies ist ein kommerziell lizenziertes Produkt und ich bewerbe es nicht in diesem Sinne. Nachdem ich verschiedene andere Dinge ausprobiert hatte, entschied ich mich für diese.
quelle
Update 2016:
Es gibt 3 zusätzliche Optionen, die ich vorschlagen kann:
1. BrowseEmAll.Cef
Eine .Net-Komponente, mit der die Chrome-Engine in Ihre .Net-Anwendung integriert werden kann. Basierend auf CefGlue, aber etwas schneller bei Updates auf die neueste Chrome-Version. Es gibt auch eine kommerzielle Support- Option, die für einige nützlich sein könnte. Natürlich ist die Komponente selbst Open Source .
2. BrowseEmAll.Gecko
Eine weitere .Net-Komponente, mit der die Firefox-Engine in Ihre .Net-Anwendung integriert werden kann. Dies basiert auf Geckofx , funktioniert jedoch im Gegensatz zur aktuellen Version von Geckofx mit einem normalen Release-Build von Firefox. Um Geckofx verwenden zu können, müssen Sie Firefox selbst erstellen. Wieder ist kommerzieller Support verfügbar, aber die Komponente selbst ist vollständig Open Source .
3. BrowseEmAll Core API
Benötigen Sie all die verschiedenen Browser in Ihrer .Net-Anwendung? Mit welcher BrowseEmAll Core-API können Sie Chrome, Firefox, Webkit und Internet Explorer in Ihre Anwendung integrieren. Dies ist jedoch ein kommerzielles Produkt. Seien Sie also gewarnt.
(Vollständige Offenlegung: Ich arbeite für diese Firma, also nimm alles, was ich sage, mit einem Körnchen Salz)
quelle
Wenn Sie nach einem netten IE-basierten Steuerelement suchen, lesen Sie Folgendes: http://code.google.com/p/csexwb2/
Ich habe es in Produktionsprodukten verwendet. Es ist ziemlich gut und hat gute Demos, obwohl es nicht mehr so gut gepflegt zu werden scheint wie früher.
quelle
Geckofx und Webkit.net waren anfangs beide vielversprechend, aber sie haben sich mit Firefox und Chrome nicht auf dem neuesten Stand gehalten, während sich der Internet Explorer verbessert hat, ebenso wie das Webbrowser-Steuerelement, obwohl es sich standardmäßig wie IE7 verhält, unabhängig davon, welche IE-Version Sie verwenden Haben, aber das kann behoben werden, indem Sie in die Registrierung gehen und es in IE9 ändern und HTML5 zulassen.
quelle
Überprüfen Sie das GeckoFX- Steuerelement.
quelle
Webview2 - chrombasiert (Vorschau) ist jetzt sowohl für winform als auch für wpf verfügbar
Bitte werfen Sie einen Blick darauf: https://docs.microsoft.com/en-us/microsoft-edge/webview2/
quelle
Ich habe alle Browser ausprobiert, die es gibt. Leider war EO.Browser der einzige, der unter allen Umständen wirklich für mich funktioniert hat. Ich wünschte, ich hätte eine kostenlose Lösung wählen können, aber am Ende hatte ich EO.Browser. Es ist ziemlich teuer, aber gut gepflegt.
quelle
Update 2016:
Für mich ist EO.WebBrowser die einzige zuverlässige und gewartete Browser-Alternative zum IE. Ich habe Tage und Wochen damit verbracht, die anderen auszuprobieren. Alle hatten einige Probleme, die die Show für mich irgendwann stoppten.
quelle
Ein Blick auf ein kommerzielles Produkt wie WebKitX lohnt sich hier: https://www.webkitx.com
Es verwendet Chromium Embedded Framework und rendert HTML5, WebGL, PDF und Flash unter Windows XP, 7, 8, 10. Es bietet auch 32-Bit- und 64-Bit-Varianten des Steuerelements.
Es bietet DOM-Zugriff über COM-Objekte ähnlich dem IE WebBrowser-Steuerelement:
Sie können JavaScript über den Funktionsnamen aufrufen, indem Sie skalare Argumente übergeben (ohne eval), und es gibt auch JavaScript-Rückrufe für Angular :
Sie können JavaScript Ihre eigenen interoperablen COM-Objekte hinzufügen:
Es unterstützt WebGL / WebAudio für HTML5-Spiele, die Sie für Citrix-Umgebungen deaktivieren können:
quelle