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 ホスティング プロセスを有効にする」のチェックを外しましょう