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); }