中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

C#.netでwebBrowserを作成してみる。【chromium】

開発環境:visual studio2015
開発言語:C#.net

1.概要

以前の記事で【WebBrowserコントロール】を使って
ブラウザを組み込んだアプリケーションを作成してみました。


ですが、デフォルト設定だと【IE7】になってしまったり
【IE11】で動かすにはレジストリをいじったりと
色々と面倒な設定があって使いにくかったので
今回は【CefSharp】を使って【chromium】ベースのブラウザを実装してみようと思います。

2.インストールする

NuGetからインストールを行います。
【ツール】→【NuGetパッケージマネージャー】→【ソリューションのNuGetパッケージの管理】をクリックします。

f:id:tsu--kun:20190805145007p:plain

検索ボックスに【cef】と入力し
【CefSharp.WinForms】を選択し、インストールします。
【.NETFramework,Version=v4.5.2】が対象になっています。

f:id:tsu--kun:20190805145017p:plain

3.【Any CPU】でも使えるようにする

インストールしたままだと下記のようなエラーが出ます。

CefSharp.Common contains unmanaged resoures, set your project and solution platform to x86 or x64. Alternatively for AnyCPU Support see 
https://github.com/cefsharp/CefSharp/issues/1714

これはプロジェクトのプラットフォームターゲットを【Any CPU】としている場合に発生します。
何かというとインストール時のデフォルトでは
【x86】【x64】のどちらかを選択しなければいけません。
これを【Any CPU】でも動作するように設定します。

一度プロジェクトを閉じます。
プロジェクトフォルダにある【csproj】を開きます。
タグ内に下記を追加します。

<CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>


次に【App.config】を開きます。
タグ内に下記を追加します。

<runtime>
	<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
		<probing privatePath="x86"/>
	</assemblyBinding>
</runtime>


プロジェクトを起動し
CefSharpの参照エラーがなければ完了です。

f:id:tsu--kun:20190805145040p:plain

4.スクリプト

とりあえず【yahoo】のページを表示してみました。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;

namespace webViewerCef
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ChromiumWebBrowser cefBrowser;
            CefSettings settings = new CefSettings();
            Cef.Initialize(settings);
            cefBrowser = new ChromiumWebBrowser("https://yahoo.co.jp");
            this.Controls.Add(cefBrowser);
            cefBrowser.Dock = DockStyle.Fill;
        }
    }
}

下図のとおり【chromium】ベースのブラウザを実装出来ました。

f:id:tsu--kun:20190805145054p:plain