WinForm窗体程序中使用CefSharp获取加载后的资源、截取request参数、拦截response数据、注入jquery文件和js代码(1)-使用CefSharp

一、开发环境

1、本机,win7 x64, .net 4.6,vs2019

2、源码地址:源代码csdn  或者底部qq问我要。或者 百度网盘   udbk

二、安装cefsharp

1、新建一个winform窗体程序,从nuget中搜索cefsharp并安装

 

 2、修改项目属性为x86

在解决方案上,右键鼠标,选择属性,更改项目属性为x86,没有x86选项就在图中配置管理器中新建

 

 

 

 

 3、重新生成项目,无错误

三、cefsharp基本使用,初始化、加入网址浏览、关闭、获取加载后的资源

1、初始化

        public static string url = "https://www.baidu.com";//设置进入网页
        public ChromiumWebBrowser browser = new ChromiumWebBrowser(url);//初始化cefsharp浏览器
        public Form1()
        {
            InitializeComponent();

            browser.Dock = DockStyle.Fill;//设置填充满窗体
            this.Controls.Add(browser);//把cefsharp加入到窗体中
        }

运行,就展示了百度的首页

 

 

 

 

 

 2、关闭事件

在窗体的关闭事件中,要释放cefsharp的资源

 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            CefSharp.Cef.Shutdown();
        }

 3、获取加载后的资源。在浏览器FrameLoadEnd事件中处理

 public void Init(string url, int? insertIndex = null)
        {
            browser.Dock = DockStyle.Fill;
           
            panbrowser.Controls.Add(browser);
            browser.RequestHandler = new WinFormsRequestHandler(Init);
           
            browser.FrameLoadEnd += webBrowser_FrameLoadEndEventArgs;
        }
        /// <summary>
        /// 页面加载完成
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void webBrowser_FrameLoadEndEventArgs(object sender, FrameLoadEndEventArgs e)
        {
            string htmlstr = string.Empty;
            if (e.Frame.IsMain)
            {
                browser.GetSourceAsync().ContinueWith(taskHtml =>
                {
                    htmlstr = taskHtml.Result;
                });
            }
           
        }