466

最新のブラウザーを .NET アプリケーションに挿入する比較的簡単な方法はありますか?

私が理解している限り、コントロールはIEWebBrowserのラッパーです。これはIEの非常に古いバージョンのように見えることを除いて問題にはなりません. (レンダリング エンジンにパッチが適用されていない場合、無数のバッファー オーバーフローの問題が修正されると本当に期待できますか?)、およびその他の問題。

Visual Studio C#を使用しています (エクスプレス エディション - ここで違いはありますか?)

アプリケーションに優れた Web ブラウザを統合したいと考えています。一部では、ユーザー登録プロセスの処理、Web サイトの機能の一部とのインターフェース、およびその順序でのその他の処理に使用するだけですが、より多くのエラー制御が必要な別のアプリケーションを念頭に置いています。

私は欲しい:

  • アプリケーションのウィンドウ内に統合できるブラウザー (別のウィンドウではない)
  • 最新のブラウザーと同等の、CSS、js、およびその他の Web テクノロジーの優れたサポート
  • 「ナビゲート」、「戻る」、「リロード」などの基本的なブラウザ機能...
  • ページコードと出力への自由なアクセス。

Chrome は BSD ライセンスの下にあるので考えていましたが、最新バージョンの IE でも同じように満足しています。

できるだけ、物事をシンプルに保ちたいと思っています。既存のコントロールにパッチを当てることができれば最善ですがWebBrowser、それは私が必要とすることの約 70% を既に行っていますが、それは不可能だと思います。

Mozilla 用の ActiveX コントロール ( http://www.iol.ie/~locka/mozilla/control.htm ) を見つけましたが、古いバージョンのようで、必ずしも改善されているわけではありません。

私は提案を受け入れます

4

8 に答える 8

188

CefSharp .Netバインディングをチェックアウトします。これは、私がしばらく前に始めたプロジェクトで、ありがたいことにコミュニティに取り上げられ、素晴らしいものになりました。

このプロジェクトはChromiumEmbeddedFrameworkをラップしており、RdioのWindowsクライアント、Windows用のFacebook Messenger、Windows用のGithubなどの多くの主要なプロジェクトで使用されています。

WPFWinformsのブラウザーコントロールを備えており、多数の機能と拡張ポイントがあります。Chromiumをベースにしているので、驚くほど高速です。

NuGetから取得します:Install-Package CefSharp.WpfまたはInstall-Package CefSharp.WinForms

例を確認して、考え/フィードバック/プルリクエストを送信してください:https ://github.com/cefsharp/CefSharp

BSDライセンス

于 2010-12-03T17:42:50.643 に答える
84

ご存じない場合、Chrome は Webkit (のフォーク) を使用します。これは Safari でも使用されます。同じ趣旨のいくつかの質問を次に示します。

他の回答が述べているように、webkit の 1 つは素晴らしいものではなく、1 つのバージョン (Google コードのバージョン) は機能しなくなり、Mono のバージョンは実験的です。誰かがまともな .NET ラッパーを作成する努力をしてくれたらいいのですが、それは誰もやりたいとは思わないことです - HTML5 や IE(8 )エンジン欠品。

アップデート (2014)

Awesomiumと呼ばれる .NET アプリケーションに Chrome を埋め込むことができる新しいデュアル ライセンス プロジェクトがあります。.NET API が付属していますが、レンダリングにはかなりのハックが必要です (例では、ブラウザー ウィンドウをバッファーに描画し、バッファーをイメージとしてペイントし、タイマーで更新します)。

これは、バトルフィールド 3 で Origin が使用したブラウザだと思います

アップデート (2016)

現在、 Awesomiumの商用版である DotnetBrowser があります。それはクロムに基づいています。

于 2009-04-26T09:24:55.787 に答える
68

ここ数日間、C# Web ブラウザ コンポーネントの代替案をテストしてきました。これが私のリストです。

1. 新しい IE バージョン 8、9 を使用する場合:

Web ブラウザ コンポーネントは IE8 ではなく IE7 ですか? これを変更するには?

長所:

  • 実行するのに多くの作業は必要ありません
  • IE9 の場合は一部の HTML5/CSS3 サポート、IE10 の場合は完全にサポート

短所:

  • ターゲット マシンにはターゲット IE バージョンがインストールされている必要があります。IE10 は Win7 ではまだプレビュー段階です。

これは多くの作業を必要とせず、HTML5 と CSS3 のサポートを得ることができますが、IE9 には最高の CSS3 と HTML5 の機能がいくつか欠けています。しかし、同じ方法で IE10 を実行できると確信しています。問題は、ターゲット システムに IE10 がインストールされている必要があることです。これは Windows 7 ではまだプレビュー段階であるため、私はそれに反対することをお勧めします。

2.OpenWebKitSharp _

OpenWebKitSharp は、WebKit.NET 0.5 プロジェクトに基づく Webkit エンジンの .net ラッパーです。WebKit は Chrome/Safari で使用されるレイアウト エンジンです。

長所:

  • 積極的に開発
  • HTML5/CSS3 サポート

短所:

  • 多くの機能が実装されていません
  • x64 をサポートしていません (アプリは x86 用にビルドする必要があります)

OpenWebKit は非常に優れていますが、多くの機能がまだ実装されていません。ここで null オブジェクト参照をスローし、デザイン モードで Visual Studio で使用すると、いくつかの問題が発生します。いくつかの js の問題があります。これを使用している人は、ほとんどすぐに js alert が何もしないことに気付くでしょう。mouseup、mousedown などのイベントが機能しない、js のドラッグ アンド ドロップにバグがあるなど。

また、特定のバージョンの VC 再頒布可能パッケージをインストールする必要があるため、インストールに問題がありました。そのため、例外の後、イベント ログを見て、VC のバージョンを見つけてインストールしました。

3.ゲッコーFX

長所:

  • モノで動作
  • 積極的に開発
  • HTML5/CSS3 サポート

短所:

  • D̶o̶e̶s̶n̶'̶t̶ ̶s̶u̶p̶p̶o̶r̶t̶ ̶x̶6̶4̶ ̶(̶A̶p̶p̶ ̶m̶u̶s̶t̶ ̶b̶e̶ ̶b̶u̶i̶l̶t̶ ̶f̶o̶r̶ ̶x̶8̶6̶)̶ - 以下のコメントを参照

GeckoFX は、WinForms アプリケーションに埋め込むためのクロス プラットフォーム Webrowser コントロールです。これは、Windows の .NET と Linux の mono で使用できます。Gecko は、Firefox で使用されるレイアウト エンジンです。

GeckoFX が積極的に開発されていないという情報に出くわしましたが、これは真実ではありません。もちろん、常に Firefox より 1 つまたは 2 つのバージョンが遅れていますが、それは正常なことです。アクティビティとコントロール自体に本当に感銘を受けました。必要なことはすべて実行されますが、実行するには少し時間が必要でした。実行するための小さなチュートリアルを次に示します。

  1. GeckoFx-Windows-16.0-0.2 をダウンロードします。ここで、新しいバージョンが利用可能かどうかを確認できます
  2. ダウンロードした 2 つの dll への参照を追加します。
  3. GeckoFX は XulRunner が必要なラッパーであるため、バージョン リストに移動して、必要なものを確認してください。
  4. 必要な XulRunner のバージョンがわかったので、 Mozilla XulRunner リリースに移動し、バージョン フォルダー -> ランタイム -> xulrunner-(your_version).en-US.win32.zip に移動します。この場合はxulrunner-16.0.en- です。 US.win32.zip
  5. すべてを解凍し、すべてのファイルを bin\Debug (プロジェクトがリリースに設定されている場合はリリース) にコピーします。
  6. フォームのビジュアル スタジオ デザイナーに移動し、ツールボックスに移動し、内部を右クリック -> 項目を選択 -> 参照 -> ダウンロードした GeckoFX winforms dll ファイルを検索 -> OK
  7. これで、新しいコントロール GeckoWebBrowser ができたはずです

本当に Chrome を使用する必要がある場合は、Awesomiumと呼ばれるこの製品を見てください。非商用プロジェクトでは無料ですが、ライセンスは商用では数千ドルです。

于 2013-02-02T23:41:15.157 に答える
28

レジストリを使用して、Web ブラウザー コントロールの IE バージョンを設定できます。HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION に移動し、"yourApplicationName.exe" を browser_emulation の値とともに追加します browser_emulation の値を確認するには、次のリンクを参照してください: http://msdn.microsoft.com/en-us /library/ee330730%28VS.85%29.aspx#browser_emulation

于 2011-10-24T10:05:44.003 に答える
21

これが「代替」の WebBrowser コントロールではないことはわかっていますが、レイアウトなどに BootStrap 3+ を使用しているページを表示しているときに、ひどいレンダリングの問題が発生していたので、次の使用を提案する投稿を見つけました。どうやら、これは IE に固有のものであり、クライアント マシンで見つかった最新のバリエーションをレンダリングに使用するように指示します (したがって、デフォルトであると思われる IE7 は使用しません)。

だからただ置く:

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

ドキュメントのヘッド部分のどこかに。

明らかに、それがあなたのドキュメントでない場合、これは役に立ちません。個人的には、WebBrowser コントロールを介して自分で作成したものではないページを読んでいる場合、これはセキュリティ ホールであると考えています。

于 2014-05-05T07:56:58.760 に答える
1

Geckofx と Webkit.net はどちらも最初は有望でしたが、Internet Explorer が改善されるにつれて Firefox と Chrome にそれぞれ対応していませんでした。Webbrowser コントロールも改善されましたが、IE のバージョンに関係なくデフォルトで IE7 のように動作します。持っていますが、レジストリに移動して、HTML5 を許可する IE9 に変更することで修正できます。

于 2013-08-07T21:24:32.560 に答える