Q128. IE ベースでない Browser コントロールは存在しないか
A.昨日のエントリでは WPF のWebBrowserコントロールについて書きました。これ IE7という非常に旧いバージョンをベースにしてるので、ページによってはレイアウトが大きく崩れます。それを回避するのがレジストリ編集な訳なんですが、標準コントロールにも関わらずそこまでしなきゃいけないのは、なんとも気持ち悪すぎます。何とかならんかということで、WebBrowser 以外の Browserコントロールを探したところ、一つ面白いのが見つかりました。
DotNetBrowser というChromium ベースのBrowserコントロールが TeamDev 社から提供されてたので、早速これを試してみたいと思います。
サンプルプログラム
Visual Studio を起動し「WPFアプリケーション」のテンプレートを選択。プロジェクト名は「DotNetBrowserSample」にします。
次はパッケージマネージャを起動して、DotNetBrowser のパッケージをインストールします。
Install-Package DotNetBrowser
プロジェクトの参照設定を展開すると、以下のアセンブリが追加されたのが確認できると思います。
DotNetBrowser
DotNetBrowser.Chromium
ビューの XAML名前空間に DotNetBrowser を追加。TextBox と WPFBrowserView コントロールを配置し、WPFBrowserView.URL プロパティと TextBox.Text プロパティをバインドさせます。WebBrowser では Source プロパティにバインドできなかったので、バインドできる分便利になってると思います。以下のXAMLをご覧ください。
一応「更新」ボタンも設けて、クリックイベントも実装しておきます。
評価用ライセンス
ここでビルドして起動すると例外吐いて落ちます。残念ながらライセンスを取得してないと起動することができません。よって評価用のライセンスを取得し起動してみたいと思います。
DotNetBrowser の製品ページ右上の「EVALUTE NOW」をクリックし申請フォームに移動、必要事項を入力した後「GET EVALUTION」をクリックします。
しばらくすると、TeamDev 社から「Your Free 30 Days Trial」というタイトルのメールが届くので、「Download Evalution Licence」をクリック。
すると teamdev.licenses というライセンスファイルがダウンロードされます。30日無償評価用ライセンスファイルですね。これをプロジェクトに追加し、ビルドアクションを「埋め込みリソース」にしてビルドし起動します。
ためしに ACID3テストを行ってみました。100点は取れるが、左上の「YOU SHOULD NOT SEE THIS AT ALL」 という表示が気になりますね。
あと WPFBrowserView の URL プロパティですが、バインドできるのは初期化時だけで、ページ遷移するのはコードビハインドに実装するしかないようです。うーん、残念。
ライセンスとお値段
さて DotNetBrowser のお値段ですが、Licensing and Pricing ページで価格を見ると、以下のようになってます。*1
ライセンスの種類 | 価格 | サポート | 備考 |
Per Developer | $1,199 | 年間55時間 | 開発者に紐づく(1名1ライセンス) |
Project | $3,549 | 年間75時間 | 1プロジェクトごと(複数開発者可) |
Company-wide | $10,799 | 年間500時間 | 会社全体 |
Source Code For 1 Developer | $7,999 | - | ソースコード |
はたして高いか安いか、皆さんの判断にお任せしますが、IE対応以外の WebBrowser が存在しない状況下、開発にかかる工数や配布のことも考えると、DotNetBrowser も選択肢の内に入れてみてもいいかも知れません。
*1:2017/03/16現在