CefSharp.WinForms でのクッキーマネージャ処理
CefSharp.WinForms型の変数をインスタンス化すれば、ブラウザを自分のアプリで制御できるようになるが、
クッキーを取得するには、インターフェースを通してインスタンスの中のクッキーマネージャ取得関数を呼び出す必要があります。
というわけで
ボタン3をクリックするとVisualStudioのコンソールにクッキーの名前が表示されます。
ポイントは、
CefSharp.WinForms.ChromiumWebBrowser browser;
と宣言した browser変数から、GetCookieManager()を引き出すところで、
通常のインテリセンスでは出てきませんし無理やり書いてもエラーになります。
https://cefsharp.github.io/api/102.0.x/html/T_CefSharp_WinForms_IWinFormsWebBrowser.htmにあるように、
IWinFormsWebBrowserというインターフェースに GetCookieManagerメソッドがあります。
インターフェースを実装しているのは、
というクラス宣言を見ればわかるように、ブラウザそのものです。
https://cefsharp.github.io/api/102.0.x/html/T_CefSharp_WinForms_ChromiumWebBrowser.htm
ですので、キャストしてしまえば、インターフェースとしてインテリセンスも表示されます。
キャストがいいのかよく判りませんが(C#の作法としてどうなの?)、
これで動くようになりました、ということでメモ。
英語の記事ばっかりだし・・・。
GetCookieManagerで「ブラウザが管理しているクッキー」を扱えるようになります。
クッキーを取得するには、インターフェースを通してインスタンスの中のクッキーマネージャ取得関数を呼び出す必要があります。
というわけで
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で「ブラウザが管理しているクッキー」を扱えるようになります。
スポンサーサイト