C# で Gecko ベースのブラウザを作成する
C# で Gecko レタリングエンジンベースのブラウザを作るためのライブラリには、GeckoFx があります。
GeckoFx を Google で検索すると、開発初期に使用されていた Google Code でのページが上位に表示されるため、開発が止まっているように見えてしまいますが、現在も Bitbucket で開発が継続されています。
導入準備
1. GeckoFx のダウンロード
GeckoFx のプロジェクトホームページから、Gecko Fx 10.0 をダウンロードします。最新版でも構いませんが、ここで 10.0 を選ぶ理由は、次の手順2で説明します。
2. XULRunner のダウンロード
GeckoFx は、Geckoエンジンをコンポーネント化した XPCOM である XULRunner をラップするライブラリですので、このまま単体では動作しません。ですので、この XULRunner を ftp.mozilla.org からダウンロードします。いくつもあるバージョンの中から 10.0.4esr を選ぶ理由は、XULRunnerがラピッドリリースであり最新版では安定性を重視できないこと、esrは法人向け延長サポート版であることの二点が挙げられます。
なお、GeckoFx と XULRunner のバージョンは同じもの(XULRunnerのバージョンが x.y.z である場合は、GeckoFx は x.y のバージョン)を選ぶ必要があります(ここでは、GeckoFx 10.0 と XULRunner 10.0.4esr)。
3. 圧縮ファイルの展開
手順1と手順2で入手した圧縮ファイルをそれぞれ展開しておきます。
プロジェクト作成
1. プロジェクト作成
2. ビルド
プロジェクト固有のビルドフォルダが用意されていなければ、プロジェクトのビルドフォルダを確保するためにソリューションのビルドを実行します。
3. 参照設定の追加
プロジェクトの参照設定に「geckofx-10.dll」を追加します。
4. ソースコード修正
このままでは GeckoFx を使えない(XULRunner を初期化できない)ので、プロジェクトの「Program.cs」を以下のように修正します。ファイルパスの部分は、XULRunner が置いてある場所(導入準備の手順3で XULRunner を展開したフォルダのパス)に書き換えて下さい。
[STAThread] static void Main() { Gecko.Xpcom.Initialize(ファイルパス); // この行を追加 Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); }
コーディング
Visual Studio のデザイナーから Form の Load イベントを自動生成します。その後、Form のコードエディタを開き、以下のように編集します(「using Gecko;」をファイルの using 宣言がたくさん書かれている先頭部分の最後尾に追加して下さい)。
public partial class Form1 : Form { private GeckoWebBrowser gecko = default(GeckoWebBrowser); public Form1() { InitializeComponent(); this.SuspendLayout(); this.gecko = new GeckoWebBrowser() { Dock = DockStyle.Fill, Parent = this }; this.ResumeLayout(false); } private void Form1_Load(object sender, EventArgs e) { this.gecko.Navigate("http://google.co.jp/"); } }
以上で、完成です。
GeckoFx をツールボックスの項目に追加し、Form にドラッグ&ドロップでコントロールを追加すると、上記のうちLoad イベントの内容だけ書くということもできます。