欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#中CefSharp的简单使用

程序员文章站 2022-07-11 11:54:20
...

准备工作

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


1.创建项目

关键步骤是项目必须是32位 
C#中CefSharp的简单使用


2.CefSharp相关文件

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

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

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


3.在项目中引用

懒人方法:直接选中目录下所有dll文件添加: 
C#中CefSharp的简单使用 
不用管后面的错误提示

引用成功后实际引用的DLL如图: 
C#中CefSharp的简单使用


4.简单页面跳转

  • 先画个界面 
    C#中CefSharp的简单使用

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

引用名空间

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的简单使用

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

其他相关操作

5.获得页面源代码

代码

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

 

注意GetSourceAsync方法是异步操作

效果 
C#中CefSharp的简单使用

6.判断页面加载完成

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

代码

        private void button1_Click(object sender, EventArgs e)
        {
            WebBrowser = new ChromiumWebBrowser(textBox1.Text);
            panel2.Controls.Add(WebBrowser);
            WebBrowser.FrameLoadEnd += new EventHandler<FrameLoadEndEventArgs>(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的简单使用

6.执行页面中的js函数

测试js代码

<html>
<body>
<button type="button" onclick="test(1,2)">测试按钮</button>
</body>
<script type="text/javascript">
function test(a,b)
{
var c = testfunc(a,b);
    alert(c);
}
function testfunc(a,b)
{
    return a+b;
}
</script>
<html>

测试功能:

调用页面中的testfunc函数

C# 代码

        private void button3_Click(object sender, EventArgs e)
        {
            WebBrowser.FrameLoadEnd += new EventHandler<FrameLoadEndEventArgs>(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的简单使用

总结

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

 原文:https://blog.csdn.net/qq_26712977/article/details/78282995