fc2ブログ

CefSharp.WinForms でのクッキーマネージャ処理

CefSharp.WinForms型の変数をインスタンス化すれば、ブラウザを自分のアプリで制御できるようになるが、
クッキーを取得するには、インターフェースを通してインスタンスの中のクッキーマネージャ取得関数を呼び出す必要があります。

というわけで


private async Task xHoge()
{
var cookieManager=((CefSharp.WinForms.IWinFormsWebBrowser)browser).GetCookieManager();
var result = await cookieManager.VisitUrlCookiesAsync(textBox1.Text, true);
var cookieCount = result.Count;
foreach (var cookie in result)
{
System.Diagnostics.Debug.WriteLine("CookieName: " + cookie.Name);
}
}


private void button3_Click(object sender, EventArgs e)
{
Task ts= xHoge();
}



ボタン3をクリックするとVisualStudioのコンソールにクッキーの名前が表示されます。

ポイントは、
CefSharp.WinForms.ChromiumWebBrowser browser;
と宣言した browser変数から、GetCookieManager()を引き出すところで、
通常のインテリセンスでは出てきませんし無理やり書いてもエラーになります。
https://cefsharp.github.io/api/102.0.x/html/T_CefSharp_WinForms_IWinFormsWebBrowser.htmにあるように、
IWinFormsWebBrowserというインターフェースに GetCookieManagerメソッドがあります。
インターフェースを実装しているのは、

public class ChromiumWebBrowser : ChromiumHostControlBase,
IWebBrowser, IChromiumWebBrowserBase, IDisposable, IWinFormsWebBrowser, IWinFormsChromiumWebBrowser,
IWin32Window, IComponent, ISynchronizeInvoke

というクラス宣言を見ればわかるように、ブラウザそのものです。
https://cefsharp.github.io/api/102.0.x/html/T_CefSharp_WinForms_ChromiumWebBrowser.htm
ですので、キャストしてしまえば、インターフェースとしてインテリセンスも表示されます。
キャストがいいのかよく判りませんが(C#の作法としてどうなの?)、
これで動くようになりました、ということでメモ。
英語の記事ばっかりだし・・・。

GetCookieManagerで「ブラウザが管理しているクッキー」を扱えるようになります。

スポンサーサイト



この記事のトラックバックURL

http://alphaiota.blog105.fc2.com/tb.php/544-4c85c98f

コメント

コメントする

管理者にだけ表示を許可する

Template Designed by DW99