C#中CefSharp的简单使用

2019/5/14更新 使用Nuget包引入的方式创建CefSharp项目



以下为原文

##准备工作##

1. 创建32位winform项目 必须指定32位或64位 这里使用32位
2. 下载CefSharp相关文件
3. 复制CefSharp相关文件到项目debug目录并添加引用


###1.创建项目###
关键步骤是项目必须是32位
C#中CefSharp的简单使用_第1张图片


###2.CefSharp相关文件###

可以直接通过NuGet程序包直接导入,本人为了图方便直接将用到的文件打包,新建项目时解压到debug目录就行

压缩包下载链接 密码:5n49

包内文件如下:
C#中CefSharp的简单使用_第2张图片
全都复制到Debug目录就行


###3.在项目中引用###
懒人方法:直接选中目录下所有dll文件添加:
C#中CefSharp的简单使用_第3张图片
不用管后面的错误提示

引用成功后实际引用的DLL如图:
C#中CefSharp的简单使用_第4张图片


###4.简单页面跳转###

  • 先画个界面
    C#中CefSharp的简单使用_第5张图片

-实现页面跳转功能
实现方式很简单

引用名空间

using System;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;

声明变量

ChromiumWebBrowser CWebBrowser;

调用

        private void button1_Click(object sender, EventArgs e)
        {
            CWebBrowser = new ChromiumWebBrowser(textBox1.Text);
            panel1.Controls.Add(CWebBrowser);
        }

执行结果:
C#中CefSharp的简单使用_第6张图片

可以加载很多原生webbrowser不能加载的内容 可以适应iframe

其他相关操作

###5.获得页面源代码###
代码

       private void button2_Click(object sender, EventArgs e)
        {
            String html =  WebBrowser.GetSourceAsync().Result;
            richTextBox1.Text = html;
        }

*注意GetSourceAsync方法是异步操作 *

效果
C#中CefSharp的简单使用_第7张图片

###6.判断页面加载完成###

页面加载完成后会触发FrameLoadEnd事件

代码

        private void button1_Click(object sender, EventArgs e)
        {
            WebBrowser = new ChromiumWebBrowser(textBox1.Text);
            panel2.Controls.Add(WebBrowser);
            WebBrowser.FrameLoadEnd += new EventHandler(FrameEndFunc);

        }

        private void FrameEndFunc(object sender, FrameLoadEndEventArgs e)
        {
            MessageBox.Show("加载完毕");
            this.BeginInvoke(new Action(() => {
                String html = WebBrowser.GetSourceAsync().Result;
                richTextBox1.Text = html;
            }));
        }

注意使用WebBrowser.GetSourceAsync().Result会阻塞当前线程

运行效果
C#中CefSharp的简单使用_第8张图片

###6.执行页面中的js函数###

测试js代码







测试功能:

调用页面中的testfunc函数

C# 代码

        private void button3_Click(object sender, EventArgs e)
        {
            WebBrowser.FrameLoadEnd += new EventHandler(FrameEndFunc);
            using (StreamReader sr = new StreamReader("cefsharptext.html"))
            {
                string html = sr.ReadToEnd();
                WebBrowser.LoadHtml(html, "http://testpage/");
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            String script = "testfunc(99,1)";
            var result = this.WebBrowser.EvaluateScriptAsync(script).Result.Result;
            MessageBox.Show(result.ToString());
        }

执行效果:
C#中CefSharp的简单使用_第9张图片

##总结##

CefSharp是一个功能很强大的浏览器控件,本人从事爬虫相关工作,合理利用cefsharp便捷执行js代码的功能,可以绕过一些前端的加密混淆代码 代码比较简单就不上传了 有需要的朋友可以联系我


忘记放联系方式了
关注公众号回复"CefSharp"即获得项目下载地址(免费)
或直接下载(5积分)
C#中CefSharp的简单使用_第10张图片

你可能感兴趣的:(C#,cefsharp)