Chromium Embedded Framework を c# から使う

走り書き

http://code.google.com/p/chromiumembedded/

CEF1とCEF3の二種類があるらしい、CEF2は欠番だとか

  • CEF1 シングルスレッドで動作する CEF3よりも軽くて早い(らしい)
  • CEF3 マルチスレッドで動作する

公式によると、CEF1のC#用bindingが2種類と、CEF3用のbindingが1種類あるそうな。
全部落としてコンパイルしてみたものの、ほとんど手を加えずにコンパイルできたのがCEF3用のxilium.cefglueだけという悲惨な状況だったので、これを使用したいと思います。

CEF3をC#から使用するために、下記サイトからC#用のbindingをダウンロードします
https://bitbucket.org/xilium/xilium.cefglue/wiki/Home

<使用したコンパイラと環境>

windows 7 32bit
Visual studio 2012

gitでcloneするか、Downloads > tags > tip からソースをダウンロード、解凍
ソリューションを開く
windowsだとGtkSharpが存在しないので、CefGlue.GtkSharpのプロジェクトはソリューションから削除、するとコンパイルが通る。
とりあえずデモを動かしたい。

CefGlue.ClientかCefGlue.Demo.WinFormsのどちらを動かせばいいのかわからない…ので
CefGlue.Clientをスタートアッププロジェクトに。

このまま動かそうとするとlibcefがないと言われるので落としてくる、ここで数時間無駄にした…
CEFの公式 http://code.google.com/p/chromiumembedded/ からdllもって来ればいいのかなーと思ってdownloadして、releaseあたりに入っているdllを入れても例外が出る。
原因はライブラリのversionが違うことらしい。
ダメ元でバージョンチェックを外してみたが動かない、ぐぬぬ
CEFの公式を見ていても、そのようなバージョンのbranchは存在しない、ググっても出ない、一体どこにあるのだ…

CefGlueのホームをよく見ると"Current Xilium's CEF3 builds available on project website."とのこと。
コミットメッセージを読むと、そこにあるXilium CEF3 Buildsの最新版とバージョンが一致している、これを落とせばいいのか…

落とした7zを解凍し、Release以下のdllを参照できるようにする。ここにceflib.dll他、必要なdllが全て入っている
参照の設定が面倒だったので以下のようなコードをMainに追加して動かした。

Environment.SetEnvironmentVariable("Path", <releaseまでのパス>);

これでceflib.dllをロード出来るように。

で、コンパイルして動かす。表示された!

プロセスが2個動いている。どうやら中で実際に動いているブラウザと、MainFormは別プロセスらしい。

使い方がわかったのでもしかしたら何か作るかも、今日はこれでおしまい

追記:

releaseビルドすると動かなかったので原因を確かめたところ、vshost.exeが存在すると動かない様です。

Properties > デバッグ >
で、一番下にある 「Visual Studio ホスティング プロセスを有効にする」のチェックを外しましょう