#はじめに
こんにちは。@masteralice3104こと「ますたー。」です。
Qiita初投稿です。
拙作の艦これ専用ブラウザ"Admiral's Desk"の開発にあたってCefsharpを採用しようとコーディングしていたのですが、そもそもVB.netでの資料が余りに(悲しいほど)少なかったので書き残すことにします。
#そもそもCefsharpとは
CefsharpとはChromiumの.NET用ラッパーみたいなものです。
でもWebbrowserコントロールの完全代替になるかというと「否」ですが、限定的な用途であれば十分実用となりそうです。
#ここでの前提
Visual Studio Community 2017 version 15.6.4
VB.net(.NET 4.6.2)でかつWinFormsを使用
Cefsharp.WinForms 65.0.0
#下準備
nugetでCefSharp.WinFormsをインストール
#基本
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
InitializeComponent()
Dim settings = New CefSharp.CefSettings
CefSharp.Cef.Initialize(settings)
Dim browser = New CefSharp.WinForms.ChromiumWebBrowser("http://www.google.co.jp")
Controls.Add(browser)
browser.Dock = DockStyle.Fill
End Sub
Private Sub Form1_Exit() Handles MyBase.Closed
CefSharp.Cef.Shutdown()
End Sub
細かいところは省略したが特に問題はないはず。
Dim settings = New CefSharp.CefSettings
CefSharp.Cef.Initialize(settings)
ここで作ったsettingでCefsharp自体をセットするのですが、設定の仕方は後ほど説明する予定です。
Dim browser = New CefSharp.WinForms.ChromiumWebBrowser("http://www.google.co.jp")
Cefsharpコンポーネントによるブラウザが(裏で)起動します。
感覚としてはwebBrowserコントロールのwebBrowser1.Navigate("URL")みたいな感じでしょうか。
ポイントは、この時点では表示がなされていないことです。(当然ですね)
Controls.Add(browser)
ここでようやくChromiumWebBrowserコントロールとして追加されます。が、表示にバグが有るようで
browser.Dock = DockStyle.Fill
としないと表示してくれない模様です。
CefSharp.Cef.Shutdown()
そしてCef.Shutdown()はMyBase.Closed時(つまりウインドウが閉じられる時)に呼ばれる関数です。れがないと暴走します。(あっても暴走するときがありますが)
後片付けはしっかり行いましょう。
#さいごに
ざっくりした解説なので補足等随時掲載します。
コードの間違いやバグなどあれば、教えていただけるととても嬉しいです。