CefSharp.OffScreen.Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | namespace CefSharp.OffScreen.Example { public class Program { private static ChromiumWebBrowser browser; public static void Main( string [] args) { const string testUrl = "http://www.baidu.com/" ; Console.WriteLine( "This example application will load {0}, take a screenshot, and save it to your desktop." , testUrl); Console.WriteLine( "You may see a lot of Chromium debugging output, please wait..." ); Console.WriteLine(); // You need to replace this with your own call to Cef.Initialize(); CefExample.Init(); // Create the offscreen Chromium browser. browser = new ChromiumWebBrowser(); // An event that is fired when the first page is finished loading. // This returns to us from another thread. browser.FrameLoadEnd += BrowserFrameLoadEnd; // Start loading the test URL in Chrome's thread. //browser.Load(testUrl); browser.Load( "dummy:" ); // We have to wait for something, otherwise the process will exit too soon. Console.ReadKey(); // Clean up Chromium objects. You need to call this in your application otherwise // you will get a crash when closing. Cef.Shutdown(); } private static void BrowserFrameLoadEnd( object sender, FrameLoadEndEventArgs e) { ChromiumWebBrowser browser = sender as ChromiumWebBrowser; if (browser.Title == "dummy:" ) { browser.LoadHtml( "<html><head></head><body><h1>OKOKOK</h1></body></html>" , "about:blank" ); return ; } // Check to ensure it is the main frame which has finished loading // (rather than an iframe within the main frame). if (e.IsMainFrame) { // Remove the load event handler, because we only want one snapshot of the initial page. browser.FrameLoadEnd -= BrowserFrameLoadEnd; var task1 = browser.GetSourceAsync(); task1.Wait(); string html= task1.Result; // Wait for the screenshot to be taken. var task = browser.ScreenshotAsync(); task.Wait(); // Make a file to save it to (e.g. C:\Users\jan\Desktop\CefSharp screenshot.png) var screenshotPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "CefSharp screenshot.png" ); Console.WriteLine(); Console.WriteLine( "Screenshot ready. Saving to {0}" , screenshotPath); // Save the Bitmap to the path. // The image type is auto-detected via the ".png" extension. task.Result.Save(screenshotPath); // We no longer need the Bitmap. // Dispose it to avoid keeping the memory alive. Especially important in 32-bit applications. task.Result.Dispose(); Console.WriteLine( "Screenshot saved. Launching your default image viewer..." ); // Tell Windows to launch the saved image. Process.Start(screenshotPath); Console.WriteLine( "Image viewer launched. Press any key to exit." ); } } } } |
本文作者:一起来学python
本文链接:https://www.cnblogs.com/c-x-a/p/7218976.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步