.NET TIPS

Firefoxの描画エンジン(Geckoエンジン)でWebページを表示するには?[C#、VB]

デジタルアドバンテージ 一色 政彦
2007/10/18

. 「TIPS:WindowsアプリケーションでWebページを表示するには?」では、Windowsフォーム上にWebブラウザ・コントロールを配置する方法を紹介している。Webブラウザ・コントロールとは、Webページを表示するためのコントロールで、このTIPSでは、WebBrowserコントロール(System.Windows.Forms名前空間)という.NET Framework 2.0に含まれるWindowsフォーム・コントロールを利用している。

 このWebBrowserコントロールは、(その内部で)Webページの描画にIE(=Internet Explorer)のレンダリング・エンジンを利用する。だが、最近では世界全体でFirefoxが約15%までブラウザ・シェアを伸ばしてきており(参考:「Market Share : Browser Market Share for September, 2007」)、レンダリング・エンジンにもFirefoxと同等のもの(=「Geckoエンジン」と呼ばれる)を使いたいというニーズも少なくないだろう(例えば、国内で人気の高いカスタム・ブラウザ「Sleipnir」にもGeckoレンダリングのモードがある)。

 そこで、本稿ではFirefoxで使われているGeckoエンジンによるレンダリングが行えるWebブラウザ・コントロールの利用方法を紹介する。

GeckoエンジンのWebブラウザ・コントロールを利用するには?

 実はFirefoxで使われているGeckoエンジンはFirefox本体と静的にコンパイルされているため、そのまま外部から利用することができない。Firefoxのソース・コードからGeckoエンジンを抜き出すことも不可能ではないと思うが、現実的に考えてそれではあまりにも手間が掛かりすぎる。それでは、もっと手軽にGeckoエンジンを利用する方法はないのか?

 Geckoエンジンはさまざまなプロジェクトで活用されている。例えば、Firefoxだけでなく、Netscape(Webブラウザ)やThunderbird(メール・クライアント)、SeaMonkey(インターネット統合アプリケーション*1)、XULRunner(XULアプリケーションのランタイム・パッケージ*2)などだ。これらのうち、SeaMonkeyやXULRunnerではGeckoエンジンのActiveXコントロール版が同梱されているので、このActiveXコントロールを利用するという方法がある。

*1 このインターネット統合アプリケーションには、タブ方式のWebブラウザ、メール・クライアント、WYSIWYG形式のHTML編集ツールなどが含まれている。
*2 XULは「XMLユーザー・インターフェイス言語」を意味し、Mozillaによりデスクトップ・アプリケーション開発のために提供されている。XULRunnerは、Geckoエンジンを利用するランタイム環境のため、「(新)GRE(=Gecko Runtime Environment)」とも呼ばれる(ちなみ、新GREに対して「Mozilla Application Suite」の一部が「旧GRE」と呼ばれている)。

 つまり、例えばXULRunnerをクライアント環境にインストールすれば、そのActiveXコントロールを利用してGeckoエンジンによるWebページ・レンダリングが実現できるというわけだ。以下では、この方法について説明する。

●XULRunnerのインストール

 まずは最新のXULRunnerをインストールしよう。これには、次のFTPサイトに行き、

「xulrunner-*.***.en-US.win32.zip」(本稿執筆時点では「xulrunner-1.9a9pre.en-US.win32.zip」)をダウンロードして、.zipファイルに格納されている「xulrunner」フォルダを、任意の場所(本稿の例では「D:\xulrunner」)に展開する。

 この中に含まれる「mozctlx.dll」が、GeckoエンジンのWebブラウザ・コントロール(ActiveX版)である。よって、このActiveXコントロールを「regsvr32.exe」*3を使ってレジストリに登録する。これには、コマンド・プロンプトを立ち上げ(これには例えば[スタート]メニューから[ファイル名を指定して実行]を表示して「cmd」を入力して実行する)、本稿の例では次のようなコマンドを入力すればよい。

regsvr32 D:\xulrunner\mozctlx.dll
Geckoエンジン・コントロール(ActiveX版)をシステムに登録するコマンド

*3 regsvr32はWindowsに付属するコンソール・プログラムで、ActiveXなどのCOMコンポーネントをシステムに登録する際に使う。コマンドライン引数にCOMコンポーネント(.DLLファイル)へのパスを指定すれば登録される。なお、登録を解除するには、「/u」オプションを付加して呼び出せばよい。

 以上でXULRunnerのインストールは完了だ。

●Visual StudioでのActiveXコントロールの活用

 ActiveXコントロールがインストールできたら、後は通常のActiveXコントロールを利用するのと同じ手順だ。一応、念のため、その手順を画面で示しておくとしよう。

 なお、以下ではVisual Studio 2005を利用している。また、以降では、ActiveXコントロールの「GeckoエンジンWebブラウザ・コントロール」は「AxMozillaBrowser」と表記。

まずは[ツールボックス]にAxMozillaBrowserのアイコンを追加しよう。これには、[ツールボックス]上で右クリックして、表示されるコンテキスト・メニューから[アイテムの選択]をクリックする。すると、次のような[ツールボックス アイテムの選択]ダイアログが表示される。
[ツールボックス アイテムの選択]ダイアログの[COM コンポーネント]タブを開き、「MozillaBrowser Class」(パスは本稿の例では「D:\xulrunner\mozctlx.dll」となっている)を選択して[OK]ボタンをクリックする。これにより、[ツールボックス]に「MozillaBrowser Class」というコントロールが追加される。ここで、より分かりやすいように「MozillaBrowser Class」から「AxMozillaBrowser」などに[アイテム名の変更]をしてもよい。以上でVisual StudioのWindowsフォーム・デザイナ上にAxMozillaBrowserを配置可能になった。次の画面は実際に、AxMozillaBrowserをWindowsフォーム上に配置して、そのDocプロパティに「Fill」を指定したところだ。
Visual StudioでAxMozillaBrowserコントロールを活用する手順

 上記の画面の手順でWindowsフォーム上に配置するところまでできた。後は、AxMozillaBrowserコントロールのNavigateメソッドを呼び出せば、そのブラウザ・コントロール内に好きなURLのWebページを表示できる。メソッドの第1パラメータにURLを指定する。例えば、フォームのLoadイベント・ハンドラで@IT/Insider.NETのトップ・ページを表示するには、次のようなコードになる。

private void Form1_Load(object sender, EventArgs e)
{
  axMozillaBrowser1.Navigate("http://www.atmarkit.co.jp/fdotnet/");
}
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  AxMozillaBrowser1.Navigate("http://www.atmarkit.co.jp/fdotnet/")

End Sub
AxMozillaBrowserコントロールでWebページを開くコードの例(上:C#、下:VB)

 これを実行すると、次の画面のようになる。

AxMozillaBrowserコントロールの実行例

 この例では、@IT/Insider.NETのトップ・ページがGeckoレンダリングによって表示されている。End of Article

カテゴリ:Windowsフォーム 処理対象:WebBrowserコントロール
使用ライブラリ:WebBrowserコントロール(System.Windows.Forms名前空間)
関連TIPS:WindowsアプリケーションでWebページを表示するには?

この記事と関連性の高い別の.NET TIPS
WindowsアプリケーションでWebページを表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間