it-swarm.com.de

.NET WebBrowser-Steuerelement durch einen besseren Browser wie Chrome ersetzen?

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

Soweit ich weiß, ist das Steuerelement WebBrowser ein Wrapper für , DH, was kein Problem darstellen würde, außer dass es so aussieht als wäre es eine sehr alte Version von IE, mit allem, was in Bezug auf CSS-Fehler mit sich bringt, potenzielle Sicherheitsrisiken (wenn die Rendering-Engine wurde nicht gepatcht, kann ich wirklich damit rechnen, dass die Zillionen-Pufferüberlauf-Probleme 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 Fällen verwende ich es nur, um den Benutzerregistrierungsprozess abzuwickeln, um mit einigen Funktionen meiner Website und anderen Dingen dieser Reihenfolge zu interagieren, aber ich habe eine andere Anwendung im Sinn, die mehr Fehlerkontrolle erfordert.

Ich brauche:

  • Ein Browser, der sich in ein Fenster meiner Anwendung integrieren lässt (kein separates Fenster)
  • Eine gute Unterstützung für CSS, Js und andere Webtechnologien, die mit jedem modernen Browser mithalten kann
  • Grundlegende Browserfunktionen wie "Navigieren", "Zurück", "Neuladen" ...
  • Freier Zugriff auf den Seitencode und die Ausgabe.

Ich habe über Chrome nachgedacht, da es unter der BSD-Lizenz steht, aber ich wäre genauso zufrieden mit einer aktuellen Version des 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 etwa 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 scheint eine alte Version zu sein, es ist also nicht unbedingt eine Verbesserung .

Ich bin offen für Vorschläge

409
Sylverdrag

Checkout CefSharp . Net Bindings, ein Projekt, das ich vor einiger Zeit gestartet habe und das dankenswerterweise von der Gemeinschaft und verwandelte sich in etwas Wunderbares.

Das Projekt umschließt das Chromium Embedded Framework und wurde in einer Reihe wichtiger Projekte eingesetzt, darunter der Windows-Client von Rdio, 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. Auf Chrom basiert, ist es auch unglaublich schnell.

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

Schauen Sie sich Beispiele an und geben Sie Ihre Gedanken/Feedback/Pull-Anfragen: https://github.com/cefsharp/CefSharp

BSD-lizenziert

163
chillitom

Chrome verwendet (ein Fork von) Webkit, wenn Sie nicht wussten, das auch von Safari verwendet wird. Hier sind ein paar Fragen, die in die gleiche Richtung weisen:

Das Webkit ist nicht so gut wie die andere Antwort sagt, eine Version funktioniert nicht mehr (der Google-Code 1) 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 er jetzt HTML5 und so viele andere Funktionen unterstützt, die der IE (8 ) Motor fehlt.

Update (2014)

Es gibt ein neues Projekt mit doppelter Lizenz, mit dem Sie Chrome in Ihre .NET-Anwendungen einbetten können. Es heißt Awesomium . Es wird mit einer .NET-API geliefert, erfordert jedoch einige Hacks zum Rendern (in den Beispielen wird das Browserfenster auf einen Puffer gezeichnet, der Puffer als Bild gezeichnet und mit einem Timer aktualisiert).

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

Update (2016)

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

82
Chris S

Ich habe jetzt einige Tage lang Alternativen zur C # -Webbrowser-Komponente getestet und hier ist meine Liste:

1. Verwenden neuerer IE Versionen 8,9:

Webbrowser-Komponente ist IE7 nicht IE8? Wie kann ich das ändern?

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 Zielversion IE installiert sein. Unter Win7 befindet sich IE10 noch in der Vorschau

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 genauso zum Laufen bringen. Das Problem wäre, dass auf dem Zielsystem IE10 installiert sein müsste und da es sich immer noch in der Vorschau auf Windows 7 befindet, würde ich dagegen raten.

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:

  • Aktiv entwickelt
  • HTML5/CSS3-Unterstützung

Nachteile:

  • Viele Funktionen nicht implementiert
  • X64 wird nicht unterstützt (App muss für x86 erstellt werden)

OpenWebKit ist ganz nett, obwohl viele Funktionen noch nicht implementiert sind. Ich hatte nur wenige Probleme mit Visual Studio, das hier keine Objektreferenzen ausgibt. Im Entwurfsmodus gibt es dann einige Probleme. Jeder, der es benutzt, wird fast sofort bemerken, dass sein Alarm nichts tut. Ereignisse wie mouseup, mousedown ... etc. funktionieren nicht, js drag and drop ist fehlerhaft und so weiter.

Ich hatte auch einige Probleme bei der Installation, da eine bestimmte Version von VC redistributable installiert sein muss. Nach einer Ausnahmebedingung habe ich im Ereignisprotokoll die Version von VC gefunden und 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̶ ̶ (siehe unten)

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 bin auf ein paar Informationen gestoßen, die besagen, dass GeckoFX nicht aktiv entwickelt wurde, was nicht stimmt. Natürlich ist es immer eine oder zwei Versionen hinter Firefox, aber das ist normal. Ich war wirklich beeindruckt von der Aktivität und der Steuerung. 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:

  1. Laden Sie GeckoFx-Windows-16.0-0.2 herunter, hier können Sie prüfen, ob neuere Versionen verfügbar sind GeckoFX
  2. Fügen Sie Verweise auf zwei heruntergeladene DLLs hinzu
  3. Da es sich bei GeckoFX um einen Wrapper handelt, benötigen Sie XulRunner. Gehen Sie zu Versionsliste , um festzustellen, welchen Sie benötigen
  4. Nachdem wir wissen, welche Version von XulRunner wir benötigen, gehen wir zu Mozilla XulRunner-Versionen , gehen zum Versionsordner -> Runtimes -> xulrunner your_version) .en-US.win32.Zip in unserem case --- (xulrunner-16.0.en-US.win32.Zip
  5. Entpacken Sie alles und kopieren Sie alle Dateien in Ihren Ordner "bin\Debug" (oder geben Sie sie frei, wenn für Ihr Projekt die Freigabe festgelegt ist).
  6. Gehen Sie zum Visual Studio Designer Ihres Formulars, gehen Sie zur Toolbox, klicken Sie mit der rechten Maustaste hinein -> Wählen Sie Elemente -> Durchsuchen -> Suchen Sie die heruntergeladene GeckoFX winforms-DLL-Datei -> OK
  7. Jetzt solltest du GeckoWebBrowser neu steuern können

Wenn Sie wirklich Chrome verwenden müssen, schauen Sie sich dieses Produkt mit dem Namen Awesomium an. Es ist für nichtkommerzielle Projekte kostenlos, für kommerzielle Projekte beträgt die Lizenz jedoch einige Tausend US-Dollar.

62
formatc

Ich hatte das gleiche Problem, der WebBrowser verwendete eine alte Version des IE. Mit einigem Nachdenken stieß ich auf den folgenden Code, der eine Änderung in der Registrierung vornimmt und es dem WebBrowser ermöglicht, die neueste IE -Version zu verwenden:

 public enum BrowserEmulationVersion
    {
        Default = 0,
        Version7 = 7000,
        Version8 = 8000,
        Version8Standards = 8888,
        Version9 = 9000,
        Version9Standards = 9999,
        Version10 = 10000,
        Version10Standards = 10001,
        Version11 = 11000,
        Version11Edge = 11001
    }
    public static class WBEmulator
    {
        private const string InternetExplorerRootKey = @"Software\Microsoft\Internet Explorer";

        public static int GetInternetExplorerMajorVersion()
        {
            int result;

            result = 0;

            try
            {
                RegistryKey key;

                key = Registry.LocalMachine.OpenSubKey(InternetExplorerRootKey);

                if (key != null)
                {
                    object value;

                    value = key.GetValue("svcVersion", null) ?? key.GetValue("Version", null);

                    if (value != null)
                    {
                        string version;
                        int separator;

                        version = value.ToString();
                        separator = version.IndexOf('.');
                        if (separator != -1)
                        {
                            int.TryParse(version.Substring(0, separator), out result);
                        }
                    }
                }
            }
            catch (SecurityException)
            {
                // The user does not have the permissions required to read from the registry key.
            }
            catch (UnauthorizedAccessException)
            {
                // The user does not have the necessary registry rights.
            }

            return result;
        }
        private const string BrowserEmulationKey = InternetExplorerRootKey + @"\Main\FeatureControl\FEATURE_BROWSER_EMULATION";

        public static BrowserEmulationVersion GetBrowserEmulationVersion()
        {
            BrowserEmulationVersion result;

            result = BrowserEmulationVersion.Default;

            try
            {
                RegistryKey key;

                key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
                if (key != null)
                {
                    string programName;
                    object value;

                    programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]);
                    value = key.GetValue(programName, null);

                    if (value != null)
                    {
                        result = (BrowserEmulationVersion)Convert.ToInt32(value);
                    }
                }
            }
            catch (SecurityException)
            {
                // The user does not have the permissions required to read from the registry key.
            }
            catch (UnauthorizedAccessException)
            {
                // The user does not have the necessary registry rights.
            }

            return result;
        }
        public static bool SetBrowserEmulationVersion(BrowserEmulationVersion browserEmulationVersion)
        {
            bool result;

            result = false;

            try
            {
                RegistryKey key;

                key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);

                if (key != null)
                {
                    string programName;

                    programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]);

                    if (browserEmulationVersion != BrowserEmulationVersion.Default)
                    {
                        // if it's a valid value, update or create the value
                        key.SetValue(programName, (int)browserEmulationVersion, RegistryValueKind.DWord);
                    }
                    else
                    {
                        // otherwise, remove the existing value
                        key.DeleteValue(programName, false);
                    }

                    result = true;
                }
            }
            catch (SecurityException)
            {
                // The user does not have the permissions required to read from the registry key.
            }
            catch (UnauthorizedAccessException)
            {
                // The user does not have the necessary registry rights.
            }

            return result;
        }

        public static bool SetBrowserEmulationVersion()
        {
            int ieVersion;
            BrowserEmulationVersion emulationCode;

            ieVersion = GetInternetExplorerMajorVersion();

            if (ieVersion >= 11)
            {
                emulationCode = BrowserEmulationVersion.Version11;
            }
            else
            {
                switch (ieVersion)
                {
                    case 10:
                        emulationCode = BrowserEmulationVersion.Version10;
                        break;
                    case 9:
                        emulationCode = BrowserEmulationVersion.Version9;
                        break;
                    case 8:
                        emulationCode = BrowserEmulationVersion.Version8;
                        break;
                    default:
                        emulationCode = BrowserEmulationVersion.Version7;
                        break;
                }
            }

            return SetBrowserEmulationVersion(emulationCode);
        }
        public static bool IsBrowserEmulationSet()
        {
            return GetBrowserEmulationVersion() != BrowserEmulationVersion.Default;
        }
    } 

Sie müssen nur eine Klasse erstellen und diesen Code einfügen und dann den folgenden Code ausführen, wenn das Programm gestartet wird:

 if (!WBEmulator.IsBrowserEmulationSet())
            {
                WBEmulator.SetBrowserEmulationVersion();
            }

VB.NET:

Imports Microsoft.Win32
Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq
Imports System.Security
Imports System.Text
Imports System.Threading.Tasks

Public Enum BrowserEmulationVersion
    [Default] = 0
    Version7 = 7000
    Version8 = 8000
    Version8Standards = 8888
    Version9 = 9000
    Version9Standards = 9999
    Version10 = 10000
    Version10Standards = 10001
    Version11 = 11000
    Version11Edge = 11001
End Enum


Public Class WBEmulator
    Private Const InternetExplorerRootKey As String = "Software\Microsoft\Internet Explorer"
    Public Shared Function GetInternetExplorerMajorVersion() As Integer

        Dim result As Integer

        result = 0

        Try
            Dim key As RegistryKey
            key = Registry.LocalMachine.OpenSubKey(InternetExplorerRootKey)
            If key IsNot Nothing Then
                Dim value As Object = If(key.GetValue("svcVersion", Nothing), key.GetValue("Version", Nothing))

                Dim Version As String
                Dim separator As Integer
                Version = value.ToString()
                separator = Version.IndexOf(".")
                If separator <> -1 Then
                    Integer.TryParse(Version.Substring(0, separator), result)
                End If
            End If

        Catch ex As SecurityException
            'The user does Not have the permissions required to read from the registry key.
        Catch ex As UnauthorizedAccessException
            'The user does Not have the necessary registry rights.
        Catch

        End Try
        GetInternetExplorerMajorVersion = result
    End Function
    Private Const BrowserEmulationKey = InternetExplorerRootKey + "\Main\FeatureControl\FEATURE_BROWSER_EMULATION"

    Public Shared Function GetBrowserEmulationVersion() As BrowserEmulationVersion

        Dim result As BrowserEmulationVersion
        result = BrowserEmulationVersion.Default

        Try
            Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, True)
            If key IsNot Nothing Then
                Dim programName As String
                Dim value As Object
                programName = Path.GetFileName(Environment.GetCommandLineArgs()(0))
                value = key.GetValue(programName, Nothing)
                If value IsNot Nothing Then
                    result = CType(Convert.ToInt32(value), BrowserEmulationVersion)
                End If
            End If
        Catch ex As SecurityException
            'The user does Not have the permissions required to read from the registry key.
        Catch ex As UnauthorizedAccessException
            'The user does Not have the necessary registry rights.
        Catch

        End Try

        GetBrowserEmulationVersion = result
    End Function
    Public Shared Function SetBrowserEmulationVersion(BEVersion As BrowserEmulationVersion) As Boolean

        Dim result As Boolean = False

        Try
            Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, True)
            If key IsNot Nothing Then
                Dim programName As String = Path.GetFileName(Environment.GetCommandLineArgs()(0))
                If BEVersion <> BrowserEmulationVersion.Default Then
                    'if it's a valid value, update or create the value
                    key.SetValue(programName, CType(BEVersion, Integer), RegistryValueKind.DWord)
                Else
                    'otherwise, remove the existing value
                    key.DeleteValue(programName, False)
                End If
                result = True
            End If
        Catch ex As SecurityException

            ' The user does Not have the permissions required to read from the registry key.

        Catch ex As UnauthorizedAccessException

            ' The user does Not have the necessary registry rights.

        End Try

        SetBrowserEmulationVersion = result
    End Function


    Public Shared Function SetBrowserEmulationVersion() As Boolean
        Dim ieVersion As Integer
        Dim emulationCode As BrowserEmulationVersion
        ieVersion = GetInternetExplorerMajorVersion()

        If ieVersion >= 11 Then

            emulationCode = BrowserEmulationVersion.Version11
        Else

            Select Case ieVersion
                Case 10
                    emulationCode = BrowserEmulationVersion.Version10
                Case 9
                    emulationCode = BrowserEmulationVersion.Version9
                Case 8
                    emulationCode = BrowserEmulationVersion.Version8
                Case Else
                    emulationCode = BrowserEmulationVersion.Version7
            End Select
        End If

        SetBrowserEmulationVersion = SetBrowserEmulationVersion(emulationCode)
    End Function

    Public Shared Function IsBrowserEmulationSet() As Boolean
        IsBrowserEmulationSet = GetBrowserEmulationVersion() <> BrowserEmulationVersion.Default
    End Function
End Class

Sie können es wie folgt verwenden:

If Not WBEmulator.IsBrowserEmulationSet() Then
    WBEmulator.SetBrowserEmulationVersion()
End If

Sie können die Registrierung verwenden, um die IE -Version für die Webbrowser-Steuerung festzulegen. Wechseln Sie zu: HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION und fügen Sie "yourApplicationName.exe" mit dem Wert browser_emulation hinzu. Den Wert der browser_emulation finden Sie unter dem Link: http://msdn.Microsoft.com/de -us/library/ee330730% 28VS.85% 29.aspx # browser_emulation

26
golavietnam

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).

18
RichieHindle

Ich weiß, dass dies kein 'Ersatz'-WebBrowser-Steuerelement ist, aber ich hatte einige schreckliche Probleme beim Rendern, als eine Seite mit BootStrap 3+ für das Layout usw. angezeigt wurde, und fand dann einen Beitrag, der die Verwendung vorschlug folgende. Anscheinend ist es spezifisch für IE und weist es an, die neueste auf dem Clientcomputer gefundene Variante für das Rendern zu verwenden (daher wird IE7 nicht verwendet, da ich glaube, dass dies die Standardeinstellung ist).

Also einfach sagen:

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

irgendwo im Kopfteil Ihres Dokuments.

Wenn es sich natürlich nicht um Ihr Dokument handelt, hilft dies offensichtlich nicht weiter (obwohl ich es persönlich als Sicherheitslücke betrachte, wenn Sie Seiten lesen, die nicht von Ihnen über das Webbrowser-Steuerelement erstellt wurden - warum nicht einfach einen Webbrowser verwenden!)

Viel Glück.

15

Schauen Sie sich die DotNetBrowser 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 übernimmt die Mehrprozessarchitektur von Chromium. Jede Webseite wird in einem separaten Chromium-Prozess gerendert, und die Anwendung funktioniert auch nach einem Absturz des Plugins oder nach Auftreten eines anderen unerwarteten Fehlers auf der Webseite weiter.

Hier sind einige weitere nützliche Funktionen von DotNetBrowser: Es ist möglich, Ladeereignisse abzuhören, Netzwerkaktivitäten zu verarbeiten, Proxy zu konfigurieren, Benutzeraktionen zu simulieren, mit Cookies zu arbeiten, auf DOM zuzugreifen und dieses zu ändern, DOM-Ereignisse abzuhören und JavaScript über .NET aufzurufen und umgekehrt, verwenden Sie die Webkamera und das Mikrofon auf der Webseite, richten Sie die WebRTC-basierte Kommunikation ein und more .

Weitere Informationen finden Sie in der API-Referenz .

Das folgende Code-Snippet zeigt, wie Sie eine BrowserView erstellen, 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");
        }
    }
}

Wenn Sie das obige Beispiel ausführen, erhalten Sie die folgende Ausgabe:

enter image description here

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 im Visual Studio Marketplace als NuGet-Paket und als VSIX-Paket verfügbar.

14
Vladimir

Ich habe einige Webkit-Varianten ausprobiert, aber meiner Erfahrung nach geht nichts über die Fortschritte, die OpenWebkitSharp gemacht hat. Ich liebe es, ich liebe es. HTML5- und CSS3-Scores sind so nah wie möglich an Google Chrome. Sehr schönes API- und Eventing-Modell. Wenn Sie "nicht implementiert" APIs am wahrscheinlichsten finden, weil sie nicht in Webkit implementiert sind. Alles andere funktioniert super.

OpenWebKitSharp ist ein .net-Wrapper für die Webkit-Engine, der auf dem WebKit.NET 0.5-Projekt basiert. Es erweitert die Version 0.5 um mehr Funktionen und bietet mehr Methoden als dieses Build. OpenWebKitSharp unterstützt sowohl das Cairo-Build (0.5) als auch das Nightly-Build des Webkits (standardmäßig Nightly). In Version 1.5 Stable und höher ist der nächtliche Build enthalten und wird nach dem Erstellen automatisch kopiert. In früheren Versionen geschieht dies mit dem Cairo-Build. OpenWebKitSharp unterstützt derzeit GTLite Navigator, einen schnellen, stabilen und flexiblen Webbrowser.

8
Vin

Versuchen Sie EO.WebBrowser . Es ist neu und basiert auf der neuesten Version des Browsers Chrome. Das Beste daran ist, dass es alles in eine einzige .NET-DLL packt, so dass es nicht nur sehr einfach zu verwenden und bereitzustellen ist, sondern auch dasselbe DLL sowohl 32-Bit als auch 64-Bit unterstützt, da es sich um ein .NET handelt dll.

6
user2540812

UPDATE 2018 MAI

Wenn Sie darauf abzielen, dass die Anwendung unter Windows 10 ausgeführt wird, können Sie den Edge-Browser mithilfe von Windows Community Toolkit in Ihre .net-Anwendung einbetten.

WPF-Beispiel:

1) Installieren Sie das Windows Community Toolkit Nuget-Paket

Install-Package Microsoft.Toolkit.Win32.UI.Controls

2) XAML-Code

<Window
    x:Class="WebViewTest.MainWindow"
    xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
    xmlns:WPF="clr-namespace:Microsoft.Toolkit.Win32.UI.Controls.WPF;Assembly=Microsoft.Toolkit.Win32.UI.Controls"
    xmlns:d="http://schemas.Microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:WebViewTest"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Grid>
        <WPF:WebView x:Name="wvc" />
    </Grid>
</Window>

3) CS-Code:

public partial class MainWindow : Window
{
  public MainWindow()
  {
    InitializeComponent();

    // You can also use the Source property here or in the WPF designer
    wvc.Navigate(new Uri("https://www.Microsoft.com"));
  }
}

WinForms-Beispiel:

public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();

    // You can also use the Source property here or in the designer
    webView1.Navigate(new Uri("https://www.Microsoft.com"));
  }
}

Bitte beziehen Sie sich auf diese Link für weitere Informationen.

5
Rahul

Ich habe GeckoFX benutzt und es dient mir sehr gut. Es verwendet die Firefox-Engine. Die einzige Einschränkung, die ich je erlebt habe, ist, dass das "DocumentLoaded" -Ereignis einmal ausgelöst 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 bis jetzt einwandfrei funktioniert.

Sie finden es hier: https://bitbucket.org/geckofx/

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

4
Teekin

MozNet ist ein .NET-Steuerelement, das früher auf dem mehr oder weniger aufgegebenen GeckoFX-Steuerelement basierte, sich jedoch noch in der vollen Entwicklung befindet und weit mehr Funktionen bietet, als GeckoFX bieten kann. Sie finden es auf der Se7en Soft Website.

3
user257033

Update 2016:

Es gibt 3 zusätzliche Optionen, die ich vorschlagen kann:

1. BrowseEmAll.Cef

Eine .Net-Komponente, mit der Sie die Chrome-Engine in Ihre .Net-Anwendung integrieren können. Basierend auf CefGlue , aber bei Updates auf die neueste Chrome Version etwas schneller. 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 Sie die Firefox-Engine in Ihre .Net-Anwendung integrieren können. Dies basiert auf Geckofx , aber im Gegensatz zur aktuellen Version von Geckofx funktioniert dies mit einer normalen Version von Firefox. Um Geckofx verwenden zu können, müssen Sie Firefox selbst erstellen. Auch hier ist kommerzieller Support verfügbar, aber die Komponente selbst ist vollständig Open Source .

. BrowseEmAll Core API

Benötigen Sie alle verschiedenen Browser in Ihrer .Net-Anwendung? Mit der BrowseEmAll Core API können Sie Chrome, Firefox, Webkit und Internet Explorer in Ihre Anwendung integrieren. Dies ist ein kommerzielles Produkt , seien Sie jedoch gewarnt.

(Vollständige Offenlegung: Ich arbeite für dieses Unternehmen. Nimm also alles, was ich sage, mit einem Körnchen Salz.)

2
daniel.herken

EO.BrowserControl ist schnell und einfach. Es hat 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.

2
user2242746

Geckofx und Webkit.net waren beide zunächst vielversprechend, aber sie hielten sich nicht mit Firefox und Chrome auf dem Laufenden, während sich der Internet Explorer verbesserte, und das Webbrowser-Steuerelement, obwohl es sich standardmäßig wie IE7 verhält Unabhängig davon, welche IE -Version Sie haben, kann dies jedoch behoben werden, indem Sie in die Registrierung gehen und diese in IE9 ändern, wobei HTML5 zulässig ist.

1
user2319683

Wenn Sie nach einem Nice 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 sein scheint wie früher.

1
scotru

Schauen Sie sich das GeckoFX Steuerelement an.

1
Vinod

Update 2016:

Für mich ist EO.WebBrowser die einzige zuverlässige, gewartete Browseralternative zu IE. Ich habe Tage und Wochen damit verbracht, die anderen auszuprobieren. Alle hatten einige Probleme, die die Show für mich irgendwann beendet haben.

0
AntonioC

Ich habe alle Browser ausprobiert, die es gibt. Leider war EO.Browser das einzige, was wirklich unter allen Umständen für mich funktionierte. Ich wünschte, ich hätte eine kostenlose Lösung wählen können, aber ich landete bei EO.Browser. Es ist ziemlich teuer, aber gut gepflegt.

0
AntonioC