WebView2 応用テクニック
Chrome DevTools Protocolを使用する
ChromeブラウザにはCDP(Chrome DevTools Protocol)がありますが、
WebView2アプリケーションでもCDP APIを簡単に使用することができます。
CDPを使えば、計測、検査、デバッグ、プロファイリングなど、
通常のWebView2では扱えないような機能を使うことができます。
CallDevToolsProtocolMethodAsyncメソッドに、コマンドとパラメータを指定します。
パラメータと戻り値はJson文字列です。
コマンドやパラメータの詳しい値についてはChrome DevTools Protocolを参照してください。
Private Async Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'DOMの情報を取得
Dim resultJson = Await webView2.CoreWebView2.CallDevToolsProtocolMethodAsync("DOM.getDocument", "{}")
'Webページのスクリーンショットを保存する
Dim param = "{ ""format"" : ""jpeg""}"
Dim resultJson2 = Await webView2.CoreWebView2.CallDevToolsProtocolMethodAsync("Page.captureScreenshot", param)
Dim data = JsonSerializer.Deserialize(Of Dictionary(Of String, String))(resultJson2) 'NuGetからSystem.Text.Jsonをインストール
Dim newBytes = Convert.FromBase64String(data("data")) 'Base64文字で取得されているので、バイナリに変換
System.IO.File.WriteAllBytes("c:\soft\sample.jpeg", newBytes)
End Sub
private async void button1_Click(object sender, EventArgs e)
{
//DOMの情報を取得
string resultJson = await webView2.CoreWebView2.CallDevToolsProtocolMethodAsync("DOM.getDocument", "{}");
//Webページのスクリーンショットを保存する
string param = @"{ ""format"" : ""jpeg""}";
string resultJson2 = await webView2.CoreWebView2.CallDevToolsProtocolMethodAsync("Page.captureScreenshot", param);
var data = JsonSerializer.Deserialize<Dictionary<string,string>>(resultJson2); //NuGetからSystem.Text.Jsonをインストール
byte[] newBytes = Convert.FromBase64String(data["data"]); //Base64文字で取得されているので、バイナリに変換
System.IO.File.WriteAllBytes(@"c:\soft\sample.jpeg", newBytes);
}
