web-dev-qa-db-ja.com

C#WPF WebBrowserの代替

.NET 3.5アプリケーション内にWebブラウザーが必要であり、デフォルトのWebブラウザーを使用したくありません(バグがあり、遅く感じるため)。クリス・キャバナのクロムを試してみましたが、機能させることができませんでした...代わりに使いやすいものはありますか?コンピューター上で非常にシンプルで軽いものを探しています。それが重要な場合、ウェブストアのフロントをホストします。

UPDATE:5年後、再び必要性が生じました。当時、私は Awesomium を使用してプログラムにWebブラウザーを表示していましたが、それがどうなったかは覚えていませんが、実際に苦痛だったことも思い出せません。

しかし今日、私は再びそれを使いたかったのですが、コードは閉じられていて、現在は商用です。ハードウェアを試してみましたが、コードを変更して望みどおりに動作させることができなかったため、 [〜#〜] cef [〜#〜] および CefSharp 、コードを見ることができるため、作業が非常に簡単になり、ブードゥーが少なくなりました(ffs、awesomiumはコードを難読化するため、間違っていることを理解できませんでした)。

基本的にAwesomiumは、2900ドルを支払う必要があり、オフスクリーンレンダリングを必要としない場合はクールですが、CEFは非常に強力であり、ニーズに合わせてコードを変更できます。

PS。 CefGlueを5分間試してみましたが、すぐには機能しなかったため、すぐに動作するCefSharpに移行しました。これは、競合する2つのオープンソースフレームワークのすばらしい恐ろしいことです。

37
Ziv

私の新しいプロジェクトをチェックアウトしてください: https://github.com/chillitom/CefSharp

これにより、Chromium Embedded Frameworkが.Net/C#になります。ソース、バイナリ、および例については、Githubページを参照してください。

特徴:

  • ナビゲーションコマンドを使用したブラウザコントロール
  • INotifyPropertyChangedイベント
  • ExecuteJavascript
  • 独自のスキーム/プロトコルハンドラーを登録する
  • リソースのダウンロードを傍受する
  • cLRオブジェクトをChromiumのJavaScriptコンテキストにバインドします。

まだアルファ版の段階にあるため、すべてのフィードバックに感謝します。

18
chillitom

C#winフォームアプリケーションで GeckoFX を使用して運が良かった。ここに 入門記事 があります。これは、起動して実行するためにインストールする必要がある依存関係を説明しています。

5
tbreffni

DotNetBrowser ライブラリをご覧ください。 ChromiumベースのWPFおよびWinFormsブラウザーコントロールを提供します。これらのコントロールは、.NETアプリケーションに簡単に組み込むことができます。 HTML5、CSS3、JavaScriptを含むすべての最新のWeb標準をサポートしています。レンダリングされたページは、Google Chromeとまったく同じように見えます。

ライブラリはChromiumのマルチプロセスアーキテクチャを継承します。各Webページは個別のChromiumプロセスでレンダリングされ、プラグインがクラッシュしたり、Webページでその他の予期しないエラーが発生した後でもアプリケーションは動作し続けます。

DotNetBrowserが提供するその他の便利な機能を次に示します。ロードイベントのリッスン、ネットワークアクティビティの処理、プロキシの構成、ユーザーアクションのシミュレート、Cookieの操作、DOMへのアクセスと変更、DOMイベントのリッスン、.NETからのJavaScriptの呼び出しが可能ですまた、その逆に、WebページでWebカメラとマイクを使用し、WebRTCベースの通信を設定し、 more にします。

詳細については、 APIリファレンス をご覧ください。

以下のコードスニペットは、BrowserViewを作成し、それをフォームに埋め込み、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");
        }
    }
}

上記の例を実行すると、次の出力が得られます。

enter image description here

ライブラリは商用です。商用ライセンスには、さまざまなチームサイズのサポートパッケージが含まれています。ライブラリのソースコードを購入することもできます。

独自のページに加えて、コンポーネントはVisual Studio Marketplaceで NuGetパッケージ および VSIXパッケージ として利用できます。

2
Vladimir

Windowsフォームを使用している場合、組み込みのWebBrowserコントロールを使用すると簡単です。 WPFも使用している場合は、WPFのWebBrowserコントロールを使用しても問題ありません。ただし、WPFとWinFormsの動作は異なります。

WPFでは、各ピクセルはWinFormsとは異なる方法でレンダリングされます。このメソッドを使用して、WebBrowserの上部のコンテンツコントロールを表示できます。

http://karlshifflett.wordpress.com/2009/06/13/wpf-float-buttons-over-web-browser-control/

ただし、カスタムウィンドウを作成して透明ウィンドウ上のWebBrowserコントロールを表示する場合、WebBrowserコントロールも表示されません。いくつかの回避策がありますが、それらのほとんどは複雑です。地獄、WinFormsの背後に偽のWPF UIを描画することさえ推奨されました。不十分な結合コードとより多くのスパゲッティ。

私はこれを一日中試してきました。これらはすべて私がこれについて集めたリソースです。次のタスクは、それらをコンパイルして、物事を理解することです。これはあなたを私と同じ船に乗せます。

WPF WebBrowser(3.5 SP1)常に手前-WPFでHTMLを表示するためのその他の提案

http://blogs.msdn.com/b/changov/archive/2009/01/19/webbrowser-control-on-transparent-wpf-window.aspx

http://msdn.Microsoft.com/en-us/library/ms742522.aspx

http://www.neowin.net/forum/topic/646970-c%23-wpf-window-with-transparency-makes-windowsformshost-disappear/

現在、私はWebBrowserコントロールをあきらめ、Awesomiumプロジェクトに取り組んでいます。コードがさまざまな.NETバージョンに分散しているため、機能させようとするのは別の面倒です。運が良ければ、ここで共有してください。

また、このプロジェクトを見て、Webブラウザーのコントロールを使いやすくすることもできます。

http://www.khrona.com/products/awesomium/

繰り返しになりますが、WinFormsにはWebBrowserコントロールに問題はなく、WPFには無数のコントロールがあり、MSはすぐに修正することに熱心ではありません。

2
r3st0r3

そのような多くの選択肢があるかどうかはわかりませんが、 http://webkitdotnet.sourceforge.net/ は1つです。ただし、WPFのコントロールではなくWinFormsのコントロールだと思うので、動作させるにはフープを少しジャンプする必要があるかもしれません。

1
mikel

Gecko WebエンジンをCOMオブジェクトとして埋め込み、標準の.NETコントロールとして使用できると思います。 (FirefoxはGeckoを使用します)

このリンクを試してください: https://developer.mozilla.org/en/Gecko

0
ManAmongHippos

http://www.syncfusion.com/faq/windowsforms/faq_c100c.aspx でこの主題に関するFAQのコレクションを見つけました。

しかし、私は自分で試したことはありません。

0
Alexey Zimarev

https://bitbucket.org/chromiumembedded/cef/src/master/ プロジェクトを参照してください。このプロジェクトは、さまざまなUIフレームワークにChromium Browser(WebKit)を埋め込むためのフレームワークを提供します。

.NET/Mono実装へのリンクがあります https://bitbucket.org/xilium/xilium.cefglue

0
Alex Burtsev