web-dev-qa-db-fra.com

Remplacement du contrôle .NET WebBrowser par un meilleur navigateur, tel que Chrome?

Existe-t-il un moyen relativement simple d'insérer un navigateur moderne dans une application .NET?

Autant que je sache, le contrôle WebBrowser est un wrapper pour C'EST-À-DIRE, ce qui ne poserait pas de problème sauf qu'il semble comme une version très ancienne de C'EST-À-DIRE, avec tout ce que cela implique en termes de bricolage CSS, de risques de sécurité potentiels (si le moteur de rendu n’a pas été corrigé, puis-je vraiment espérer que les zillions débordements de mémoire tampon soient résolus?) et d’autres problèmes.

J'utilise Visual Studio C # (édition rapide - cela fait-il une différence?)

J'aimerais intégrer un bon navigateur Web dans mes applications. Dans certains cas, je ne l'utilise que pour gérer le processus d'enregistrement des utilisateurs, l'interface avec certaines fonctionnalités de mon site Web et d'autres éléments de cet ordre, mais j'ai une autre application en tête qui nécessitera plus de contrôle ... err.

J'ai besoin:

  • Un navigateur pouvant s'intégrer dans une fenêtre de mon application (pas une fenêtre séparée)
  • Un bon support pour CSS, js et autres technologies Web, à égalité avec tout navigateur moderne
  • Les fonctions de base du navigateur telles que "naviguer", "retour", "recharger" ...
  • Accès libéral au code de la page et à la sortie.

Je pensais à Chrome, car il est sous licence BSD, mais je serais tout aussi heureux d’une version récente d’IE.

Dans la mesure du possible, j'aimerais que les choses restent simples. Le mieux serait de pouvoir appliquer le contrôle WebBrowser existant, qui gère déjà environ 70% de ce dont j'ai besoin, mais je ne pense pas que ce soit possible.

J'ai trouvé un contrôle ActiveX pour Mozilla ( http://www.iol.ie/~locka/mozilla/control.htm ), mais il semble que ce soit une ancienne version, donc ce n'est pas nécessairement une amélioration .

Je suis ouvert aux suggestions

409
Sylverdrag

Checkout CefSharp . Liaisons Net , un projet que j'ai lancé il y a bien longtemps et qui, heureusement, a été repris par le communauté et transformé en quelque chose de merveilleux.

Le projet englobe le Chromium Embedded Framework et a été utilisé dans un certain nombre de projets majeurs, notamment le client Windows de Rdio, Facebook Messenger pour Windows et Github pour Windows.

Il comporte des commandes de navigateur pour WPF et Winforms et comporte des tonnes de fonctionnalités et de points d'extension. Étant basé sur le chrome, il est extrêmement rapide.

Prenez-le à partir de NuGet: Install-Package CefSharp.Wpf ou Install-Package CefSharp.WinForms

Découvrez des exemples et donnez votre opinion/feedback/demandes-pull: https://github.com/cefsharp/CefSharp

sous licence BSD

163
chillitom

Si vous ne le saviez pas, Chrome utilise (un fork de) Webkit, également utilisé par Safari. Voici quelques questions qui vont dans le même sens:

La version Webkit n’est pas excellente, contrairement à l’autre réponse: une version ne fonctionne plus (la version google code) et la version Mono est expérimentale. Ce serait bien si quelqu'un faisait l'effort de créer un wrapper .NET digne de ce nom mais ce n'est pas quelque chose que personne ne semble vouloir faire. ) moteur manque.

Mise à jour (2014)

Un nouveau projet à double licence vous permet d'intégrer Chrome dans vos applications .NET appelées Awesomium . Il est livré avec une API .NET mais nécessite pas mal de bidouilles pour le rendu (les exemples dessinent la fenêtre du navigateur dans un tampon, peignent le tampon en tant qu’image et actualisent le temps).

I pense c'est le navigateur utilisé par Origin dans Battlefield 3.

Mise à jour (2016)

Il existe maintenant DotnetBrowser , une alternative commerciale à Awesomium. Il est basé sur le chrome.

82
Chris S

Je teste des alternatives au composant de navigateur Web C # depuis quelques jours et voici ma liste:

1. Utiliser les nouvelles IE versions 8,9:

composant du navigateur Web est IE7 pas IE8? Comment changer cela?

Avantages:

  • Peu de travail est nécessaire pour le faire fonctionner
  • un peu de support HTML5/CSS3 si IE9, complet si IE10

Les inconvénients:

  • La version cible IE de la machine cible doit être installée, IE10 est toujours en aperçu sur Win7.

Cela ne nécessite pas beaucoup de travail et vous pouvez obtenir un support HTML5 et CSS3 bien que IE9 manque de certaines des meilleures fonctionnalités CSS3 et HTML5. Mais je suis sûr que IE10 pourrait fonctionner de la même manière. Le problème serait que le système cible devrait avoir installé IE10 et, étant donné qu'il est toujours en aperçu sur Windows 7, je le déconseillerais.

2. OpenWebKitSharp

OpenWebKitSharp est un wrapper .net pour le moteur de kit Web basé sur le projet WebKit.NET 0.5. WebKit est un moteur de mise en page utilisé par Chrome/Safari

Avantages:

  • Activement développé
  • Prise en charge de HTML5/CSS3

Les inconvénients:

  • Beaucoup de fonctionnalités non implémentées
  • Ne supporte pas x64 (App doit être construit pour x86)

OpenWebKit est plutôt agréable, bien que de nombreuses fonctionnalités ne soient pas encore implémentées. J'ai rencontré peu de problèmes lorsque je l’utilisais avec Visual Studio, qui jette ici une référence d’objet null, puis en mode conception, il y a quelques problèmes avec js. Tous ceux qui l'utiliseront remarqueront presque immédiatement que js alert ne fait rien. Des événements tels que mouseup, mousedown, etc. ne fonctionnent pas, js drag and drop est buggy, etc.

J'ai également eu quelques difficultés à l'installer car il nécessite une version spécifique de VC redistribuable installé. Ainsi, après exception, j'ai consulté le journal des événements, j'ai trouvé la version de VC et je l'ai installé.

3. GeckoFX

Avantages:

  • Fonctionne en mono
  • Activement développé
  • Prise en charge de HTML5/CSS3

Les inconvénients:

  • Do̶e̶s̶n̶'̶

GeckoFX est un contrôle multiplate-forme de Webrowser destiné à être intégré à des applications WinForms. Ceci peut être utilisé avec .NET sous Windows et mono sous Linux. Gecko est un moteur de mise en page utilisé par Firefox.

Je suis tombé sur peu d'informations indiquant que GeckoFX n'est pas développé de manière active, ce qui n'est pas vrai. Bien sûr, il y a toujours une ou deux versions de Firefox, mais c'est normal, j'ai été vraiment impressionné par l'activité et le contrôle lui-même. Il fait tout ce dont j'avais besoin, mais j'avais besoin d'un peu de temps pour le faire fonctionner, voici un petit tutoriel pour le faire fonctionner:

  1. Télécharger GeckoFx-Windows-16.0-0.2 , vous pouvez vérifier ici si une version plus récente est disponible GeckoFX
  2. Ajouter des références à deux dll téléchargées
  3. Puisque GeckoFX est un wrapper, vous avez besoin de XulRunner, allez à Liste des versions pour voir lequel vous avez besoin
  4. Maintenant que nous savons quelle version de XulRunner nous avons besoin, nous allons à versions de Mozilla XulRunner , allez au dossier de version -> runtimes -> xulrunner votre_version) .en-US.win32.Zip, dans notre case --- (xulrunner-16.0.en-US.win32.Zip
  5. Décompressez tout et copiez tous les fichiers dans votre bin\Debug (ou publiez-le si votre projet est configuré pour le publier)
  6. Allez dans Visual Studio Designer de votre formulaire, allez dans la boîte à outils, cliquez avec le bouton droit de la souris sur -> Choisir les éléments -> Parcourir -> Trouver le fichier dll GeckoFX winforms téléchargé -> OK
  7. Maintenant, vous devriez avoir un nouveau contrôle GeckoWebBrowser

Si vous devez vraiment utiliser Chrome, jetez un oeil à ce produit appelé Awesomium , il est gratuit pour les projets non commerciaux, mais la licence est de quelques milliers de dollars pour les commerciaux.

62
formatc

J'ai eu le même problème, le WebBrowser utilisait une ancienne version d'IE, avec un peu de googler, je suis tombé sur le code suivant qui modifie le registre et permet au WebBrowser d'utiliser la dernière version IE possible:

 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;
        }
    } 

Il vous suffit de créer une classe et d'y insérer ce code, puis d'exécuter le code suivant au démarrage du programme:

 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

Vous pouvez l'utiliser comme:

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

Vous pouvez utiliser la base de registres pour définir IE version pour le contrôle du navigateur Web. Accédez à: HKLM\LOGICIEL\Microsoft\Internet Explorer\Principal\FeatureControl\FEATURE_BROWSER_EMULATION et ajoutez "yourApplicationName.exe" avec la valeur de browser_emulation. Pour connaître la valeur de browser_emulation, reportez-vous au lien suivant: http://msdn.Microsoft.com /en-us/library/ee330730%28VS.85%29.aspx#browser_emulation

26
golavietnam

Jetez un coup d’œil au contrôle Mono.WebBrowser - il intègre soit Gecko (utilisé par Firefox), soit WebKit (utilisé par Safari) dans WinForms (sans utiliser ActiveX).

18
RichieHindle

Je sais que ce n'est pas un contrôle WebBrowser "de remplacement", mais je rencontrais des problèmes de rendu épouvantables lorsque je montrais une page qui utilisait BootStrap 3+ pour la présentation, etc. le suivant. Apparemment, il est spécifique à IE et lui dit d’utiliser la dernière variante trouvée sur la machine cliente pour le rendu (donc elle n’utilisera pas IE7 car j’estime par défaut)

Donc, il suffit de mettre:

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

quelque part dans la partie principale de votre document.

Si, bien sûr, ce n'est pas votre document, cela ne vous aidera évidemment pas (bien que je considère personnellement que c'est un trou dans la sécurité si vous lisez des pages que vous n'avez pas créées par le biais du contrôle du navigateur Web - pourquoi ne pas utiliser simplement un navigateur Web!)

Bonne chance.

15

Jetez un coup d'œil à la bibliothèque DotNetBrowser . Il fournit des contrôles de navigateur WPF et WinForms basés sur Chromium, qui sont assez faciles à intégrer dans une application .NET. Il prend en charge toutes les normes Web modernes, y compris HTML5, CSS3 et JavaScript. La page rendue ressemble exactement à celle de Google Chrome.

La bibliothèque hérite de l'architecture multi-processus de Chromium - chaque page Web est rendue dans un processus Chromium distinct et l'application continue de fonctionner même après la panne du plug-in ou toute autre erreur inattendue sur la page Web.

DotNetBrowser fournit d’autres fonctionnalités utiles: il est possible d’écouter des événements de charge, de gérer l’activité du réseau, de configurer un proxy, de simuler les actions de l’utilisateur, de travailler avec des cookies, d’accéder et de modifier DOM, d’écouter des événements DOM, d’appeler JavaScript depuis .NET. et inversement, utilisez la caméra Web et le microphone sur la page Web, configurez la communication WebRTC et plus .

Consultez le Référence de l'API pour plus de détails.

L'extrait de code ci-dessous montre comment créer un BrowserView, l'intégrer à un formulaire et charger une URL:

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");
        }
    }
}

Une fois que vous avez exécuté l'exemple ci-dessus, vous obtiendrez le résultat suivant:

enter image description here

La bibliothèque est commerciale. Les licences commerciales incluent des packages de support pour différentes tailles d’équipes. Il est également possible d’acheter le code source de la bibliothèque.

Outre sa propre page, le composant est disponible sous la forme package NuGet et package VSIX dans Visual Studio Marketplace.

14
Vladimir

J'ai essayé une poignée de variantes de Webkit, mais d'après mon expérience, rien ne vaut les progrès réalisés par OpenWebkitSharp . J'adore j'adore… Les partitions HTML5 et CSS3 sont aussi proches que possible de Google Chrome. Très belle API et modèle de concours complet. Si vous trouvez des API "non implémentées", probablement parce qu'elles ne sont pas implémentées dans Webkit. Tout le reste fonctionne très bien.

OpenWebKitSharp est un wrapper .net pour le moteur de kit Web basé sur le projet WebKit.NET 0.5. Il ajoute plus de fonctionnalités à la version 0.5 et fournit plus de méthodes que cette version. OpenWebKitSharp prend en charge les versions Cairo (0.5) et nocturnes de Webkit (Nightly par défaut). Dans la version 1.5, Stable et plus, la construction nocturne est incluse et automatiquement copiée après la construction. Dans les versions antérieures, cela se produisait avec la version cairo. OpenWebKitSharp est actuellement associé à GTLite Navigator, un navigateur Web rapide, stable et flexible.

8
Vin

Essayez EO.WebBrowser . Il est nouveau et basé sur la dernière version du navigateur Chrome. La meilleure partie de ce logiciel réside dans le fait qu’il intègre tout dans une seule DLL .NET, ce qui lui confère non seulement une grande facilité d’utilisation et de déploiement, mais aussi le même DLL, qui prend en charge les versions 32 bits et 64 bits, car il s’agit d’un fichier .NET. dll.

6
user2540812

MISE À JOUR 2018 MAI

Si vous ciblez une application sur Windows 10, vous pouvez maintenant intégrer le navigateur Edge à votre application .net à l'aide de Windows Community Toolkit .

Exemple WPF:

1) Installer le package de nuget de Windows Community Toolkit

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

2) Code XAML

<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) Code CS:

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"));
  }
}

Exemple WinForms:

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"));
  }
}

Veuillez vous référer à ceci lien pour plus d'informations.

5
Rahul

J'ai utilisé GeckoFX et cela me sert très bien. Il utilise le moteur Firefox. La seule mise en garde que j’ai jamais rencontrée, c’est qu’il émettait l’événement "DocumentLoaded" une fois avant que le document ne soit réellement chargé ... des images et des trucs sont chargés. Je l'ai corrigé en ignorant simplement le premier, et cela a fonctionné à merveille jusqu'à présent.

Vous pouvez le trouver ici: https://bitbucket.org/geckofx/

Comme la plupart des bibliothèques décentes, il est open source.

4
Teekin

MozNet est un contrôle .NET, basé auparavant sur le contrôle plus ou moins abandonné de GeckoFX, mais il est en plein développement et comporte bien plus de fonctionnalités que ce que GeckoFX ne peut vanter. Vous pouvez le trouver sur le site Se7en Soft .

3
user257033

Mise à jour 2016:

Il y a 3 options supplémentaires que je peux suggérer:

1. BrowseEmAll.Cef

Un composant .Net qui peut être utilisé pour intégrer le moteur Chrome dans votre application .Net. Basé sur CefGlue mais un peu plus rapidement sur les mises à jour de la dernière version de Chrome. Il existe également une option de support commercial qui pourrait s'avérer utile pour certains. Bien sûr, le composant lui-même est open source .

2. BrowseEmAll.Gecko

Un autre composant .Net qui peut être utilisé pour intégrer le moteur de Firefox dans votre application .Net. Ceci est basé sur Geckofx mais contrairement à la version actuelle de Geckofx, cela fonctionnera avec une version normale de Firefox. Pour utiliser Geckofx, vous devrez créer Firefox vous-même. Encore une fois , le support commercial est disponible mais le composant lui-même est entièrement open source .

. API BrowseEmAll Core

Vous avez besoin de tous les navigateurs de votre application .Net? Avec laquelle l’API BrowseEmAll Core, vous pouvez intégrer Chrome, Firefox, Webkit et Internet Explorer dans votre application. Ceci est un produit commercial mais soyez prévenu.

(divulgation complète: je travaille pour cette entreprise, alors prenez tout ce que je dis avec un grain de sel)

2
daniel.herken

EO.BrowserControl est rapide et facile. Il a le moteur de navigateur Chrome et fonctionne avec toutes les versions de .NET

https://visualstudiogallery.msdn.Microsoft.com/fcee0646-42e7-484f-b22e-f8b2ace55dd7

Remarque: il s’agit d’un produit sous licence commerciale et je n’en fais pas la promotion dans cet esprit. Après avoir essayé diverses autres choses, j'ai finalement choisi ceci.

2
user2242746

Geckofx et Webkit.net étaient tous les deux prometteurs au début, mais ils ne se tenaient pas au courant avec Firefox et respectivement Chrome tandis qu'Internet Explorer s'améliorait, de même que le contrôle Webbrowser, bien qu'il se comporte comme IE7 par défaut quelle que soit votre version de IE, mais vous pouvez corriger cela en allant dans le registre et en le changeant en IE9, autorisant HTML5.

1
user2319683

Si vous recherchez un contrôle basé sur Nice IE - consultez: http://code.google.com/p/csexwb2/

Je l'ai utilisé dans des produits de production. C'est assez bon et il y a de bonnes démos bien que cela ne semble pas être maintenu aussi bien qu'avant.

1
scotru

Découvrez le contrôle GeckoFX .

1
Vinod

Mise à jour 2016:

Pour moi, la seule alternative de navigateur fiable et maintenue à IE est EO.WebBrowser. J'ai passé des jours et des semaines à essayer les autres. Tous avaient des problèmes qui ont arrêté la série pour moi à un moment donné.

0
AntonioC

J'ai essayé tous les navigateurs existants. Malheureusement, le seul qui a vraiment fonctionné pour moi dans toutes les circonstances a été EO.Browser. J'aurais aimé pouvoir choisir une solution gratuite, mais je me suis retrouvé avec EO.Browser. C'est assez cher, mais bien entretenu.

0
AntonioC