Le remplacement .NET de contrôle avec un meilleur navigateur, tels que google Chrome?
Est-il relativement facile pour insérer un navigateur moderne dans un .NET application?
Comme je le comprends, le WebBrowser
de contrôle est un wrapper pour IE, qui ne serait pas un problème, sauf qu'on dirait que c'est une très vieille version de IE, avec tout ce que cela implique en termes de CSS vis-ups, les risques potentiels de sécurité (si le moteur de rendu n'était pas corrigée, peut-on vraiment s'attendre à des tas de problèmes de débordement de la mémoire tampon pour être fixé?), et d'autres questions.
Je suis en utilisant Visual Studio C# (express edition - t-il une différence ici?)
Je voudrais intégrer un bon navigateur web dans mes applications. Dans certains, je viens de l'utiliser pour gérer l'inscription de l'utilisateur, l'interface avec certains de mes fonctionnalités du site et d'autres choses de cet ordre, mais j'ai une autre demande à l'esprit que nécessitera plus de euh... de contrôle.
J'ai besoin de:
- Un navigateur qui permet d'intégrer à l'intérieur d'une fenêtre de mon application (pas une fenêtre séparée)
- Un bon support pour le CSS, js et autres technologies web, sur pied d'égalité avec n'importe quel navigateur moderne
- De base les fonctions de votre navigateur comme de "naviguer", "arrière", "reload"...
- Libéral accès à la page de code et de sortie.
Je pensais à propos de google Chrome, car il est livré sous licence BSD, mais je serais tout aussi heureux avec une version récente d'internet explorer.
Autant que possible, je tiens à garder les choses simples. Le mieux serait si on pouvait patch existant WebBrowser
de contrôle, qui fait 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 c'est une ancienne version, il n'est donc pas nécessairement une amélioration.
Je suis ouvert aux suggestions
- Pourquoi dites-vous que le contrôle WebBrowser utilise une vieille version de IE? Il utilise la version installée sur le système de l'utilisateur, bien que la IE8 WebBrowser s'affiche par défaut à la version IE7 rendu: blogs.msdn.com/ie/archive/2009/03/10/...
- Parce qu'il n'a pas l'air sur ma machine. J'ai installé IE8 mais le contrôle montre les problèmes d'affichage que je n'ai pas voir depuis IE 5. Un très simple formulaire de connexion, 2 champs avec une touche de CSS a brouillé d'affichage, et un peu de javascript affichage ne fonctionne pas, alors qu'il s'affiche bien dans IE8, Firefox, Chrome, Opera ... donc j'ai supposé que le moteur de rendu a été un ancien. Je pourrais être tout à fait tort à ce sujet et peut-être que le problème est en fait différent de ce que je pensais.
- Vous êtes dans l'erreur. Il utilise la dernière c'est à dire sur votre système. Cependant, j'ai lu quelque part que le contrôle WebBrowser a une forte arrière-problème de compatibilité que le navigateur autonome. IE8 peut avoir, par exemple, une icône à cliquer pour activer mode IE7. Dans le cadre de votre programme, ce n'est pas possible, de sorte que les paramètres par défaut du contrôle de la précédente en mode de compatibilité. Otoh, que, je n'ai pas lu comment le configurer pour utiliser "IE8 en mode".
- C'est étrange car la page NE s'affiche pas correctement en mode IE7 ainsi que dans IE8 mode dans mon navigateur. (La page est your-translations.com/newDesign, cliquez sur le bouton ouvrir une session pour voir les formes qui se foiré. Comme vous pouvez le voir, c'est assez simple.)
- En fait, John sanders, vous avez tort. Il utilise ie4 et vous avez besoin de changer une valeur de registre à dire de l'usage courant. Consulter la rubrique "mode de fonctionnalité d'émulation" et vous obtiendrez ur réponses, récemment modifié, utilisé pour inclure un mot-clé indigènes, mais ils l'ont changé, google les mots clés je l'ai mentionné à "contrôle webbrowser" et u se trouvent article msdn.
- Merci pour cette gemme. Pourriez-vous nous donner un lien vers l'article de msdn directement, et si possible expliquer comment forcer un contrôle webbrowser à utiliser la dernière version d'internet explorer disponible sur la machine?
- Quelqu'un aurait-il une recommandation pour une utilisation avec watin?
- Il n'utilise PAS la version qui est installée sur le système de l'utilisateur. Je suis en cours d'exécution IE11, lorsque je place un Contrôle WebBrowser sur un nouveau Formulaire Windows, puis l'exécuter, il affiche dieu-aweful pages. J'ai même essayé plus de 20 ou alors, des tutoriels sur la façon de le WebControl navigateur pour utiliser la version la plus récente de la dernière version qui est installé, mais rien ne fonctionne. Il n'a jamais. Je ne sais pas quels trucs que vous utilisez, mais il y a évidemment quelque chose qui nous manque, parce que je n'ai jamais réussi à le faire fonctionner, ni a personne que je connais.
- Par défaut, hébergé
WebBrowser
de contrôle utilise IE7 émulation, sauf instruction contraire avecFEATURE_BROWSER_EMULATION
. Ceci est documenté ici: blogs.msdn.com/b/askie/archive/2009/03/23/... - C'est ok, c'est une vieille question, mais j'espère que c'est utile: Vous pouvez définir la
WebBrowser
de contrôle de l'utilisation d'un plus version de IE sans trop de douleur: stackoverflow.com/questions/18333459/... - veuillez consulter ma réponse pour voir comment faire du webbrowser à utiliser la dernière version de ie qui a installé
- Je suis tombé sur cette réponse et je pense que cela peut vous aider.
- DotNetBrowser fournit WPF/WinForms de contrôle basé sur les plus récentes de Chrome moteur. Il est très facile à utiliser, et il y a de libre et de l'Open Source Académique des licences.
Vous devez vous connecter pour publier un commentaire.
Caisse CefSharp .Net liaisons, un projet que j'ai commencé a tout à l'arrière qui, heureusement, s'est repris par la communauté et de les transformer en quelque chose de merveilleux.
Le projet englobe la Chrome Incorporé Cadre et a été utilisé dans un certain nombre de grands projets, y compris Rdio du client Windows, Facebook Messenger pour Windows et Github pour Windows.
Il dispose de contrôles de navigateur pour WPF et Winforms et a des tonnes de fonctionnalités et de points d'extension. Étant basé sur Chromium il est blisteringly rapide.
Saisir de NuGet:
Install-Package CefSharp.Wpf
ouInstall-Package CefSharp.WinForms
Découvrez des exemples et donner vos idées/commentaires/pull-requests: https://github.com/cefsharp/CefSharp
Sous Licence BSD
AnyCPU
de configuration. C'est une super nouvelle!!!!.Chrome utilise (un fork de) Webkit si vous ne savez pas, qui est également utilisé par Safari. Voici quelques questions qui sont de la même veine:
Le webkit n'est pas grande que l'autre réponse unis, une version qui ne fonctionne plus (le google code) et le Mono est expérimental. Ce serait bien si quelqu'un fait l'effort de faire une vie décente .NET wrapper pour elle, mais ce n'est pas quelque chose que quelqu'un semble vouloir le faire - ce qui est surprenant étant donné qu'il a désormais en charge le HTML5 et de nombreuses autres fonctionnalités que les IE(8) moteur manque.
Mise à jour (2014)
Il y a un nouveau double-projet sous licence qui vous permet de vous intégrer Chrome dans votre .NET applications appelées Awesomium. Il est livré avec une .NET api, mais nécessite un certain nombre de hacks pour le rendu (les exemples de dessiner la fenêtre du navigateur pour un tampon, peinture le tampon comme une image et d'actualisation sur un timer).
Je pense c'est le navigateur utilisé par l'Origine dans Battlefield 3.
Mise à jour (2016)
Il est maintenant DotnetBrowser, une alternative commerciale à Awesomium. Il est basé sur Chrome.
J'ai testé des alternatives à la C# composant navigateur Web pour quelques jours et voici ma liste:
1. Utilisant les nouvelles versions IE 8,9:
Composant Navigateur Web est IE7 pas IE8? Comment faire pour changer cela?
Pour:
Contre:
Cela ne nécessite pas beaucoup de travail et vous pouvez obtenir un peu de support de HTML5 et CSS3 bien que IE9 manque de certains des meilleurs CSS3 et HTML5 fonctionnalités. Mais je suis sûr que vous pourriez obtenir IE10 l'exécution de la même manière. Le problème serait que le système cible devrait avoir IE10 installé, et depuis, c'est toujours dans l'aperçu sur Windows 7, je voudrais suggérer à son encontre.
2. OpenWebKitSharp
OpenWebKitSharp est un .net wrapper pour le moteur webkit basé sur le WebKit.NET 0.5 projet. WebKit est un moteur de rendu utilisé par google Chrome/Safari
Pour:
Contre:
OpenWebKit est très agréable, bien que de nombreuses fonctionnalités ne sont pas encore mis en œuvre, j'ai connu quelques problèmes de l'utiliser avec visual studio qui met en valeur null référence d'objet ici et puis en design de mode, il y a quelques js problèmes. Tout le monde l'utilise presque immédiatement avis js alerte ne fait rien. Des événements comme mouseup,mousedown... etc. ne fonctionne pas, js glisser-déposer est buggé et ainsi de suite..
J'ai également eu quelques difficultés à l'installer car il nécessite la version spécifique de redistribuables VC installé, donc après l'exception que j'ai regardé de journal des événements, version de VC et installé.
3. GeckoFX
Pour:
Contre:
GeckoFX est une plate-forme de Webrowser de contrôle pour l'intégration dans des Applications WinForms. Ceci peut être utilisé avec .NET sur Windows et avec mono sous Linux.
Gecko est un moteur de rendu utilisé par Firefox.
Je suis tombé sur quelques informations qui GeckoFX n'est pas activement développé qui n'est pas vrai, bien sûr, c'est toujours un ou deux versions de Firefox, mais c'est normal, j'ai été vraiment impressionné par l'activité et le contrôle de lui-même. Il fait tout ce dont j'avais besoin, mais j'ai besoin d'un peu de temps pour le remettre en marche, voici un petit tutoriel pour le remettre en marche:
Mozilla XulRunner communiqués, allez à la version dossier -> temps de fonctionnement -> xulrunner-(your_version).en-US.win32.zip dans notre cas, xulrunner-16.0.en-US.win32.zip
votre projet est défini à la libération)
Si vos devez vraiment utiliser Chrome, jetez un oeil à ce produit appelé Awesomium, c'est gratuit pour les projets non commerciaux, mais la licence est quelques milliers de dollars à des fins commerciales.
omni.ja
, le.dll
, et la.exe
fichiers dans le même répertoire que mes fichiers de code, inclus dans le projet, puis en définissant l'Action de Construire pouromni.ja
de contenu.J'ai eu le même problème, le WebBrowser était en utilisant une ancienne version de IE, avec quelques recherches sur google je suis tombé sur le code suivant effectue une modification dans la base de registre et rend le contrôle WebBrowser à utiliser la dernière version de IE possible:
Il vous suffit de créer une classe et de mettre ce code, puis exécutez le code suivant lors du démarrage du programme:
VB.NET:
Vous pouvez l'utiliser comme:
Vous pouvez utiliser le registre pour définir la version de IE pour le contrôle webbrowser.
Aller à: HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION et ajouter "yourApplicationName.exe" avec la valeur de browser_emulation
Pour voir la valeur de browser_emulation, reportez-vous lien: http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation
Un coup d'oeil à la Mono.WebBrowser de contrôle - il intègre soit Gecko (comme utilisé par Firefox) ou WebKit (utilisé par Safari) en WinForms (sans l'aide d'ActiveX).
Je sais que ce n'est pas un "remplacement" contrôle WebBrowser, mais j'ai eu quelques affreux problèmes de rendu tout en montrant une page à l'aide de BootStrap 3+ pour la mise en page etc et puis j'ai trouvé un post qui m'a suggéré de l'utiliser. Apparemment, c'est spécifique à IE et lui dit d'utiliser la dernière variation sur l'ordinateur client pour le rendu (afin de ne pas utiliser IE7 comme je crois par défaut)
Donc suffit de mettre:
quelque part dans le head de votre document.
Si bien sûr, il n'est pas de votre document, de toute évidence, cela ne va pas aider (bien que personnellement, je la considère comme un trou de sécurité si vous êtes en train de lire les pages non créé par vous-même à travers le contrôle webbrowser - pourquoi ne pas simplement utiliser un navigateur!)
Bonne chance.
<head>
, le mettre en tant que premier enfant de<head>
. Il nous a fallu un certain temps pour comprendre cela.<meta>
que le premier enfant de<head>
, il va s'exécuter en mode de compatibilité, pas en mode edge.Prendre un coup d'oeil à la DotNetBrowser de la bibliothèque. Il fournit de Chrome à base de WPF et WinForms les commandes du navigateur, qui sont assez faciles à intégrer .NET application. Il prend en charge tous les standards modernes du web telles que HTML5, CSS3 et JavaScript. Le rendu de la page ressemble exactement comme dans Google Chrome.
La bibliothèque hérite de Chrome multi-architecture de processus – chaque page web est affichée dans une autre Chrome processus, et l'application va continuer à travailler même après plugin de crash ou de toute autre erreur inattendue se produit sur la page web.
Voici quelques autres fonctionnalités utiles, fournis par DotNetBrowser: il est possible d'écouter les événements de chargement, de gérer l'activité du réseau, configurer le proxy, de simuler des actions de l'utilisateur, travail avec les cookies, l'accès et modifier les DOM, écouter DOM événements, faire appel à du JavaScript à partir de .NET et vice-versa, l'utilisation d'une caméra web et d'un microphone sur la page web, configurer WebRTC-fondé de la communication, et plus.
Découvrez la Référence de l'API pour plus de détails.
L'extrait de code ci-dessous montre comment créer un BrowserView, de l'intégrer dans un Formulaire, et de charger une URL:
Une fois que vous exécutez l'exemple ci-dessus, vous obtiendrez le résultat suivant:
La bibliothèque est commercial. Les licences commerciales inclure des paquets d'appui pour l'équipe différente tailles. Il est aussi possible de se procurer de la bibliothèque de code source.
En plus de sa propre page, le composant est disponible en Package NuGet et comme Package VSIX dans Visual Studio Marché.
J'ai essayé une poignée de Webkit variantes, mais dans mon expérience, rien ne vaut le progrès que OpenWebkitSharp a. L'amour l'amour c'.. HTML5 et CSS3 scores sont d'aussi près qu'ils peuvent obtenir de Google Chrome. Très bonne API et des concours de modèle. Si vous trouvez "non implémenté" Api la plus probable, car ils ne sont pas mis en œuvre dans Webkit. Tout le reste fonctionne très bien.
Essayer EO.WebBrowser. C'est nouveau et est basé sur la dernière version du navigateur google Chrome. La meilleure partie à ce sujet est qu'il emballe tout à l'intérieur d'un seul .NET dll afin non seulement il est très facile à utiliser et à déployer, mais aussi la même DLL prend en charge à la fois 32 bits et 64 bits parce que c'est une .NET dll.
J'ai utilisé GeckoFX et il me sert très bien. Il utilise le moteur de Firefox. Le seul inconvénient que j'ai jamais couru avec elle, c'est qu'il émet de la "DocumentLoaded" événement une fois avant que le document est en fait entièrement chargé... je pense que c'est expulsé et que le HTML est chargé, et puis un autre quand toutes les images et les choses sont chargés. J'ai corrigé en ignorant tout simplement la première, et il a travaillé magnifiquement sans faute jusqu'à présent.
Vous pouvez le trouver ici: https://bitbucket.org/geckofx/
Comme la plupart des décent bibliothèques, il est open-source.
MISE À JOUR 2018 PEUT
Si vous ciblez application de s'exécuter sur Windows 10, alors maintenant, vous pouvez incorporer Bord de votre navigateur web le .net application à l'aide de Utilisateurs De Windows Toolkit.
WPF Exemple:
1) Installer Windows Communauté Trousse De Package Nuget
2) du Code XAML
3) CS Code:
WinForms Exemple:
Veuillez vous référer à cette lien pour plus d'informations.
MozNet est un .NET de contrôle, auparavant basé sur le plus ou moins abandonné GeckoFX de contrôle, mais est en plein développement et a beaucoup plus de fonctionnalités que GeckoFX pouvez secouer un bâton à. Vous pouvez le trouver à la Se7en Doux site web.
EO.BrowserControl est rapide et facile. Il a le navigateur google Chrome, moteur et fonctionne avec n'importe quelle version de .NET
https://visualstudiogallery.msdn.microsoft.com/fcee0646-42e7-484f-b22e-f8b2ace55dd7
Note: Ceci est un commercialement produit sous licence et je ne suis pas la promotion de ce avec cela à l'esprit. Après avoir essayé diverses autres choses, j'ai fini par choisir cette.
Mise à jour de 2016:
Il y a 3 options supplémentaires, je peux vous proposer:
1. BrowseEmAll.Cef
Un .Net composant qui peut être utilisé pour intégrer les Chrome moteur de dans votre .Net Application. Basé sur CefGlue mais un peu plus vite sur les mises à jour à la dernière version de Chrome. Il y a aussi un support commercial option disponible qui pourrait être utile pour certains. Bien sûr, le composant lui-même est open source.
2. BrowseEmAll.Gecko
L'autre .Net composant qui peut être utilisé pour intégrer les Firefox moteur dans votre .Net application. Ceci est basé sur Geckofx mais contrairement à la version actuelle de Geckofx cela va fonctionner avec une version normale version de Firefox. Pour utiliser Geckofx vous aurez besoin de construire Firefox vous-même. Nouveau support commercial est disponible, mais le composant lui-même est entièrement open source.
3. BrowseEmAll API de Base
Besoin de tous les différents navigateurs dans votre .Net Application? Qui le BrowseEmAll API de Base vous pouvez intégrer google Chrome, Firefox, Webkit et Internet Explorer dans votre application. C'est un produit commercial mais soyez donc avertis.
(Divulgation complète: je travaille pour cette société afin de prendre tout ce que je dis avec un grain de sel)
Si vous êtes à la recherche d'un joli c'est à dire basée contrôle--check out:
http://code.google.com/p/csexwb2/
Je l'ai utilisé dans la production de produits. Il est assez bon et a de bonnes démos bien que ne semble pas être maintenue aussi bien maintenant que d'habitude.
Geckofx et Webkit.net ont été à la fois prometteuse au premier abord, mais ils n'ont pas de tenir à jour avec Firefox et Chrome, respectivement, tandis qu'Internet Explorer s'est améliorée, le contrôle Webbrowser, bien qu'il se comporte comme IE7 par défaut indépendamment de ce que la version de IE que vous avez, mais qui peut être résolu en allant dans le registre et de le modifier pour IE9 permettant HTML5.
Découvrez la GeckoFX de contrôle.
J'ai essayé tous les navigateurs qui sont là-bas.
Malheureusement, le seul qui a vraiment travaillé pour moi dans toutes les circonstances, a été EO.Le navigateur.
Je souhaite que je pourrais avoir choisi une solution gratuite, mais j'ai fini par EO.Le navigateur.
Il est assez cher, mais très bien entretenu.
Mise à jour de 2016:
Pour moi, la seule fiable, maintenu navigateur alternative à IE est EO.WebBrowser.
J'ai passé des jours et des semaines à essayer les autres. Tous d'entre eux a eu quelques problèmes qui ont arrêté de le montrer pour moi à un certain point.