11using System ;
22using System . Threading . Tasks ;
3- using Newtonsoft . Json ;
43
54namespace CefSharp . Example . DevTools
65{
@@ -15,42 +14,14 @@ public static class DevToolsExtensions
1514 /// <returns>png encoded image as byte[]</returns>
1615 public static async Task < byte [ ] > CaptureScreenShotAsPng ( this IWebBrowser chromiumWebBrowser )
1716 {
18- //if (!browser.HasDocument)
19- //{
20- // throw new System.Exception("Page hasn't loaded");
21- //}
22-
23- var browser = chromiumWebBrowser . GetBrowser ( ) ;
24-
25- if ( browser == null || browser . IsDisposed )
26- {
27- throw new Exception ( "browser is Null or Disposed" ) ;
28- }
29-
30- //var param = new Dictionary<string, object>
31- //{
32- // { "format", "png" },
33- //}
34-
3517 //Make sure to dispose of our observer registration when done
36- using ( var devToolsClient = browser . GetDevToolsClient ( ) )
18+ //If you need to make multiple calls then reuse the devtools client
19+ //and Dispose when done.
20+ using ( var devToolsClient = chromiumWebBrowser . GetDevToolsClient ( ) )
3721 {
38- const string methodName = "Page.captureScreenshot" ;
39-
40- var result = await devToolsClient . ExecuteDevToolsMethodAsync ( methodName ) ;
41-
42- dynamic response = JsonConvert . DeserializeObject < dynamic > ( result . ResponseAsJsonString ) ;
43-
44- //Success
45- if ( result . Success )
46- {
47- return Convert . FromBase64String ( ( string ) response . data ) ;
48- }
49-
50- var code = ( string ) response . code ;
51- var message = ( string ) response . message ;
22+ var result = await devToolsClient . Page . CaptureScreenshotAsync ( ) ;
5223
53- throw new Exception ( code + ":" + message ) ;
24+ return result . Data ;
5425 }
5526 }
5627 }
0 commit comments